It seems to me that everything about WordPress, BuddyPress and the like are written in such a way as to be so mind numbingly hard it might honestly be easier to get a vogon to write good poetry.
Last time, in “The World’s Grumpiest Dev” I talked about how much the insides of WordPress irritate me. Just getting all that off my chest helped me get over feeling like Marvin. So today I am going to talk about what upsets me about WordPress.
I should say that there is a lot about WordPress that is good or even great. The code side is not included in that list.
Part of my irritation with WordPress is the way that the code is constructed and then documented borders on obscurantism. I am starting to suspect that the reason for the obscurantism is that there is a lot of money to be made from people driven to tears by a difficult problem. As long as you never share the secret of solving such problems then, sooner or later, people will pay to make the pain stop.
All I want to do is customise one part of one page on the site. Just some simple changes to make it look nice. After six weeks, all I have is a growing list of reasons why I wish I never started. It doesn’t help that the standards for abstraction in the code offend me to my core. The expectation of procedural coding at the plugin level seems wrong. I get it for themes. Themes need to start at the top and finish at the bottom but plugins are logic, not layout.
Not that any of that is your problem. Indeed you, dear reader, should probably not care about this at all. Today, I’m just feeling depressed with the whole project. If there was some half-way decent documentation, that would be a start…
I’ve written more than one custom CMS from scratch and I know this should not be as hard as I am finding it. After 15 or so years as a generalist PHP developer (and one of the better ones too) I feel qualified to say that while WordPress has a lovely UI, the insides are the excreta of Satan. You can make it all work in short order but, short of sacrificing seven virgins, you sure as hell are not going to make it look any good.
BuddyPress, why you not have simple code?
It has taken me two weeks to discover where the “legacy” templates are hidden. I figured that once I had found them, I would have, what maybe ten files to edit. Oh, no. 166 files in the legacy folder alone. 166 files that “you just edit and place in your theme” to make changes. That is, if you can guess which file to change. There being no documentation and the code being light on comments and not the least bit self-explanatory.
I am pretty sure that exactly no one at all will read this post. Well, at least no one responsible for WordPress or BuddyPress (and the devil spawn code). If there is ever one such person who reads this blog post, I have a single clear request for you: Please, for the love of all that is holy, stop holding us hostage and document your system, properly.
We understand that WordPress is big and complex (and badly written in a few places). And we appreciate that you might have made more than a few questionable design choices over the years. We get it that a lot of this stuff exists only for you to make money from it. No one is judging you for that. But please, there is no reason that simply rearranging a single page should take a month of research.
BuddyPress themes and WordPress search
Here is another significant drag factor I have had to face. For some reason every theme going styles itself as supporting BuddyPress. That is because BuddyPress will figure out how to work in any theme.
Knowing that your theme will not break a plugin is no reason to tag that theme as “supporting” that plugin. I have been searching on WordPress.org, whose search functionality is questionable at best. All I want is to find an example, of a theme that uses the new API and themes specifically for BuddyPress.
If I can see how another person solved a problem, maybe I can learn how to solve that problem too. But no, searching for “BuddyPress” in the WordPress theme directory gives you lots and lots of results and almost none of them are any use at all.
Worse yet, not even the BuddyPress community has any idea which themes might be doing things the new way. I almost feel like they rolled out a new API and cannot tell if anyone uses it at all.
If it has not been documented it does not exist.
By the token of things only existing, if documented – I would have to say that most of WordPress is a figment of my imagination. As are BuddyPress compliant themes.
What the hell is up with the scheduling engine?
WordPress is the only CMS that has an ongoing intermittent bug whereby a scheduled post just fails to publish and so stays pending forever. The very existence of the status “Schedule missed” means that you have to come back every day around publish time and make sure it happens. Like The World’s Grumpiest Dev post, that should have gone out at 10am London time. Instead, I had to give it a kick in the late afternoon.
After “updating” the post it suddenly claimed that it had actually been posted seven hours prior. If you are going to be a dick, at least be honest about it WordPress.
That is a serious entomophagistic octad of fails, right there. I mean, talk about the ultimate janiform friend! What would be so hard about having a system that recognises that it is a little bit late and just gets on with it?
NucleusCMS, which is a joy to code for but lacks the features needed for the Author Buzz project solved this issue back when it did not even have a proper admin area. If the trigger does not happen on time, fire it late. It is not a big deal.
To be fair, you could probably fix this issue by setting a WGET cron job to fire on a low-cost page at your favourite publishing times. You shouldn’t have to and this is total BS that you do, but that is a fix.
A low-cost page is a page that does not ask much of WordPress to generate it. Something without widgets or shortcodes would be best but, really, anything will do.
Auto documenting of added features
And another thing. Why does the admin area not have the ability to list the features that have been registered? After all, WordPress uses this ridiculous global variable array of everything it has going on. So there is no prohibitive cost to fire events (or whatever) and list the results because everything is run, every time regardless of if it is needed. I will never understand why WordPress does so much unneeded work on every page load but, given that WordPress does do all that work, the very least it could do would be to document the shortcodes it has registered. Would that be so hard?
Much less impressive blog systems assume that plugins will provide documentation but WordPress assumes that they will not. Which means that it needs some other way of letting the admin know what they have to work with. The result is that there are things, simple things, that WordPress can do that you must nevertheless be a dev or dev-in-training to take advantage of. Most people who run WordPress don’t want to do code, they want to write blog posts.
Possibly useful stuff
A list of plugins I hope might actually make my life easier. Even so, I am not holding my breath. The insides of WordPress seem to me to have been created by someone who took too much acid while reading Douglas Adams books. The longer I work with WordPress, the more Marvin I feel.
- BuddyPress Custom Profile Menu By Sensible Plugins. If I am right, this will enable me to skip a whole bunch of fiddly coding.
- The schedule missed fix plugin by sLaNGjI. Ye gads, it is depressing that a system as mature as WP needs such a fix.
- View all available shortcodes (another hot-fix) by Paulund. Why is this not a core admin feature?
Grumpy Dev, over and out
You probably should have stopped reading this rubbish a long time ago. If you made it this far, please stroke my fragile dev ego and leave a comment. Especially if any of these things are things that irritate you, or if you have found solutions to some of this pain and would care to share.