Joomla! vs WordPress is probably the comparison I can offer the most insight on. All told, I’ve worked on about 10 Joomla! sites and 30 WordPress sites. The most complex site used Joomla!, although I think it would have been easier with WordPress. The simplest sites all used WordPress, and it seemed like the right tool And the rest all fell within a similar range. But I generally preferred working on the WordPress sites. Because, for me, WordPress has proven to have at least four advantages. It’s been easier to set up, easier to troubleshoot, easier for non-technical client administrators to update, and easier to extend. At least for the sites I’ve worked on.

I think the first three advantages go hand in hand, and probably ought to be expected given WordPress’s famous 5-minute install and early dominance as the go-to solution for simple blog and brochure sites. But of those, the third advantage – the ease of administration – is perhaps the most important. Because that’s what the client sees.

As a developer, I can shield the client from a difficult setup or troubleshooting environment. But I can’t very well shield them from an inherently complex admin interface. And what I found with Joomla!, is that clients often struggled to do simple tasks, like adding a new page, and giving it a pretty URL Because in Joomla!, a new page requires you to create a new article AND a new menu item. And that proved very difficult for many clients to grasp. Whereas in WordPress, clients can usually handle simple tasks on their own. So, in my experience, WordPress tends to be better for the clients.

But I’d also like to talk about the fourth advantage – the ease of extension. Because I think that is where WordPress especially starts to encroach on what’s supposed to be Joomla!’s specialty.

For a platform to be easily extensible, I think what you need is to make it highly flexible, while also encouraging standardization. In WordPress, almost everything is a post. I didn’t like this at first, because I felt that it was too opinionated towards blogging. But I eventually realized that the seemingly opinionated word “posts” belied what was ultimately a very unopinionated data structure that could accommodate any sort of database record information. And that’s a good thing. Because that allows – and encourages – plugin and theme developers to use custom posts for whatever information they need to store to the database. Products, Events, and Staff members can all be custom post types. And, to the extent that WordPress developers utilize custom post types in their own projects, other developers can easily understand those objects, which will already be familiar to them. And they can also extend other developers’ custom post further via metadata. Which is not something you could do with a non-standardized database object.

By contrast, Joomla! does not have an equivalently flexible, standard data object. So every different component has its own tables and structure – which will require different knowledge to understand and different APIs to interact with. And so although Joomla! is very flexible, any component you add to your site will be both harder to understand, and harder to extend.

One feature where WordPress’s advantage is not so clear is with custom form creation. Joomla! has a pretty robust library of standardized custom fields. Entire admin forms, with fairly complex features, including calendars and repeating subforms, can be created via XML files. In WordPress, the Advanced Custom Fields (ACF) plugin can mostly bridge this gap. But there are a couple of caveats.

First, ACF doesn’t allow repeater fields unless you purchase the Pro version. And so, if we are comparing the free version of Joomla! to the free version of WordPress, Joomla! does have a leg up there.

But even if ACF Pro was free, I think there’s still some loss in having this functionality tied to a plugin. Which goes back, again, to standardization. Because any decisions that are left to plugin developers to make are ultimately opportunities for divergence, rather than standardization. I will say that WordPress’s metadata feature – which is leveraged by ACF – greatly mitigates this problem. But there are still opportunities for divergence. For example, ACF Pro stores repeater data by appending a number (e.g. “_0”, “_1”, … “_n”) to its base field key. I haven’t had any issues with this, but it is stretching the platform to its limits – probably beyond its original intent – and is therefore, arguably, a hack. And, more to the point: another, similar plugin might very well solve this problem in a different way. So the storage of repeater data might not be the same between systems – which I think is ultimately a kind of data integrity issue. WordPress’s metadata feature, especially when combined with ACF Pro, is very intuitive and powerful. But I think it could ultimately be improved, and would constitute another advantage over Joomla!, if such a system were incorporated into WordPress core.

There are several other comparisons I can make, but I’ll be more brief with these. I think block based editors like Gutenberg are incredibly useful (very flexible and promote standardization), and Joomla! doesn’t have an adequate solution. Joomla!’s system of modules, especially when combined with the {loadposition} or {loadmodule} directives, mostly solve this problem, but they are much more cumbersome to use. And if we compare Joomla! modules with their more obvious equivalent – WordPress widgets – I think WordPress wins out again, because it’s drag-and-drop admin interface is simply more usable.

Joomla! has certainly been flexible enough to meet all the demands that I have required of it. But so has WordPress. And while Joomla! has usually been kind of a pain to work with – especially for clients – WordPress has often been a joy. And although I’d ultimately like WordPress to come out-of-the box with a nice metadata form system, as long as I have ACF Pro, I haven’t yet seen a project where Joomla! was a better fit over WordPress.