WordPress likes to break my site, because such software is just shite
Recently moved to a new hosting—more precisely, since Dec. 26, 2022—I was fighting with the lack of motivation that made me procrastinate the writing of blog posts, when I discovered a horrendous fact: WordPress is screwing some of my posts, in an unexplainable way. And I don’t even know since when is this happening: is it due to an upgrade, or is it because of the new WordPress hosting? The import seemed to have happened smoothly!
A quick example
While I tried to fix some of the errors through bulk editing in PhpMyAdmin, and some others manually, the issue isn’t a simple one, as there are several sequences of HTML tags that are treated by WordPress… royally screwed!
For an example, here’s how a block of text (a paragraph) looks like in Gutenberg, the official WordPress editor:
And here’s how it’s displayed in Firefox:
Inside, the code looks like so:
Nothing wrong, except that WordPress behaves strangely. It’s as if, inside a CODE pair of tags, all the other tags have the angle brackets escaped, so they’re displayed as is instead of being interpreted!
This is nuts. Inside its own editor, WordPress behaves normally, with its JS correctly interpreting the HTML, but once it serves the content to the world, somewhere esc_html() is called in PHP, and it screws things!
Situations when I saw this happen, and HTML being escaped include:
- SPAN, EM, STRONG, A, and almost anything and everything within a CODE section.
- Certain sequences of tags within a BLOCKQUOTE, including P, PRE, CODE, and other chained tags.
Mostly, it seems to be triggered by CODE, but it also hates complex formatting. Well, I admit I do exaggerate quite often, but this isn’t Markdown, so complex formatting should be possible.
What didn’t help and doesn’t help
Disabling Gutenberg doesn’t help. All the plugins that I tested don’t do anything helpful (well, I suppose they enable TinyMCE, but this aside). If anything, they add one more breakage: the orange color disappears!
It also doesn’t help that I was stupid enough as to write long, oversized posts, often with crazy formatting that makes it difficult for me to check them now for errors!
Oh, and the comments with formatting: they’re affected too!
Finally, even the replacements I’ve made in the DB seem to have been a less-than-great idea: yes, some errors have been fixed, but what if other errors have been added? Either way, I should inspect “by hand” my older posts that might have such HTML formatting (and they’re a lot!), meaning I’ll have to read them!
Fuck me sideways.
Oh, just a thought: what if it’s a “security” mechanism inserted somewhere by IONOS, my new WP hosting provider? Maybe someone thought “CODE” to be dangerous…
I need to find a way to fix this shit. But WordPress is a gigantic pile of crap.
How did it start: OMG, I need to move
While not having the greatest motivation and focus on blogging, the need arose for me to look for another hosting for this blog. I have spent Dec. 13 to Dec. 26 to explore the available solutions, and finally on Dec. 26 I decided to move the blog here. Once I knew I had to do it, I considered the following alternative: switching to a static website, so that less CPU strain and lower RAM would be required on the server, because there would be no PHP and possibly no database (bar for something like SQLite); or going on with WordPress, but on a price-effective hosting.
Regardless of the type, I opted to host my site on IONOS (formerly 1&1, now owned by United Internet, who also owns GMX and Web.de). It’s worth noting that the different national branches of IONOS have different commercial offers; I’ve inspected ionos.de, ionos.fr, ionos.ro, ionos.co.uk. For various reasons, I decided to go for ionos.fr, which has an advantage over the German one: a language I can actually use in communication, should the need arise.
What I contracted with ionos.fr:
- For experiments, VPS S (MicroVPS): €1+VAT/month CPU: 1 vCore RAM: 0.5 Go (480 MiB) SSD: 10 GB (8.0 GiB usable) Debian 11
- An additional domain name to be used with the VPS: €1+VAT for the first year, then €7+VAT. The domain comes with a free SSL Starter Wildcard (DigiCert), which I have to manually manage yearly (the automatic management only applies to domains used with their hosting offers, not with VPS).
- For this blog, WordPress Hosting Start: €2+VAT/month for the first year, then €4+VAT per year. 9 GB RAM, 25 GB SSD (it looks like it’s 25 GiB, hence 26 GB), PHP 8.0, Maria DB v10.6, SSH/SFTP.
- I have moved my domain name from GoDaddy to Ionos.fr, and it’s actually cheaper: €9.60+VAT for the first year, then €12+VAT per year since March 2024. The free SSL Starter Wildcard (DigiCert) for *.ludditus.com is automatically managed by Ionos.fr as long as it’s used with this WordPress hosting.
Until I discovered the aforementioned breakage, I was happy with Ionos, and stoically resigned to the fact that WordPress is unavoidable.
Static websites are a lost cause
Initially, I studied (and tried on that VPS S) some lightweight CMS solutions, lighter than WordPress, with the list narrowed down to:
- Pico CMS
- Bolt CMS
I even examined SPIP and TYPO3, but they were obviously unsuitable. After all these years, SPIP is still primitive, complex, and impossible to work with! TYPO3 on Debian 11 … has issues trying to match the versions of
composer-runtime-api, and PHP.
The issues raised with the above final shortlist of 10 solutions are:
- too heavy for VPS S (even if I’d use Nginx instead of Apache)
- importing from WordPress
- the comments!
Most such solutions couldn’t care less about importing comments from WordPress!
Then I wanted to go light, and I misfired. The static solutions I examined were:
- Eleventy (horrendous website, made for retards!)
As for the comments systems to be added, if possible:
- Commento, Commento++
- Uterrances (requires an account on Github to post a comment)
Most of them have huge issues importing from WP; some don’t even have an official mechanism for that. Generally, static websites aren’t well-suited for comments, except for the privacy-breaking Disqus.
The last iteration, to which I was almost willing to stick to, was based on Publii + Cusdis comments. The pros:
- Publii imports incredibly well from WP.
- It has a couple of really usable themes.
- It integrates Cusdis quite well, if you choose to host the comments with them (self-hosting Cusdis is a huge PITA: either choose a 2.3 GB docker image or compile it… but there are problems on Debian.
- It doesn’t force you to write in Markdown, in fact it has a shitty cross-platform front-end (I say shitty because it’s an Electron app) where you can not only manage the site quite nicely, but it allows writing or editing posts either in Markdown or WYSIWYG/HTML (TinyMCE, actually).
- It uploads over SSH/SFTP to the server.
Now for the cons of Publii:
- The Electron app means it’s heavy (but at least this heaviness is local).
- Once I picked an editor for a site, say TinyMCE, I can’t seem to be able to go back to Markdown (locally, I only saved HTML output files if I chose TinyMCE); and if I had chosen Markdown in the first place, the built-in editor wouldn’t have been the best choice.
- If I want to edit the same site on 2 different machines, or if I want to reinstall Publii locally, I must first make a backup to the local site and then import it into Publii, otherwise it insists on creating a new site from scratch, as it doesn’t know how to import the output from the server.
- If you change anything with the potential to affect the CSS or the theme, it will sync absolutely all the files, i.e. it will re-upload the entire site!
- Although its themes already have a good choice of typefaces, namely local ones (Google Fonts is not GDPR-compliant as per Germany’s stupid judges, as using a font from them would “reveal your IP,” which apparently is sacred!), they are only woff2, and you can’t add anything to them.
- Its themes are
.hbstemplates; I know that nowadays everything is a template, and everything is JS (when it’s not a container), but it’s annoying nonetheless.
Well, it kinda worked… except that I found no way of importing the already existing 900 comments.
So I’m stuck with WordPress.
I mean, wish me luck in fixing these breakages, or else I won’t start writing anything new. The situation is pissing me off terribly, and it adds to many other things that happened to me. (Sneak preview: I must quit XFCE for KDE, because of Thunar’s maintainer; but there are issues with Manjaro that require some analysis, such as the fact that a Manjaro KDE-related package is broken, despite having been built by Phillip Müller, Manjaro’s CEO, while building it from AUR or installing it from Chaotic-AUR results in a bug-free package; which raises the question: how are Manjaro’s specific packages built, and where are their actual sources and building scripts? The latest EndeavourOS cannot boot from Ventoy, and they don’t give a crap. Oh, and, for having tried Kubuntu, I can’t make GTK3 apps running as root, such as Synaptic, observe the GTK themes configured from within KDE; furthermore, trying to theme GTK2 by using
lxappearance fails too, i.e.
lxappearance cannot even save the theme for itself! Linux is such a woosy.)
In the meantime, maybe you’d like to listen to some Internet radio stations I listen to!
I wish you luck!
Nu stiam ce-i cu tine de nu mai scrii.
Si uite de aia nu “prinde” *nix la popor. Ca te imbarliga de te saturi si vrei ceva mai simplu. Parca era “if it works, don’t fix it”.
You could check NixOS Guix or move to BSDs 🙂
Consider a headless CMS and another thing for visitors’ webgui.
Subrion CMS looks nice but I have not a closer experience, test on localhost.
Study replication between databases.
wget entire site.