When you take a look at what runs the web, you’ll find a very, very large portion of sites are running WordPress. It’s insanely popular; from the small blog dedicated to cat pictures, to some of the biggest news websites, WordPress powers a great deal of the web in regards to CMS of choice.
I myself have a love-hate relationship with WordPress; While it is extremely powerful, and can do a number of cool things, that’s also its major fault.
WordPress’ plugin and theme system is also its greatest limiting factor
You may think that, with all the themes and plugins available, that the sky is the limit with WordPress.
You would be wrong.
Discarding the fact that most plugins and themes are poorly maintained, if at all, you’ve also got to deal with poorly optimized code, and working within the constraints the developer has envisioned (or planned for).
The most damning of all, however, is WordPress’ core itself when it comes to development.
I’ve been working in WordPress for years; I’ve modified existing themes, built themes from scratch, and have even accomplished plugin development.
The WordPress codex has a wealth of information about all the delightful functions WordPress offers. It also relies on the community to really explain how those functions work, because the core information on a function really expects you to know how everything operates (especially when you dig into the more complex functions, or building your own taxonomies).
What is missing, however, is just how buggy some of those functions are.
Did you know that one of the most basic, and critical functions in WordPress, the_content(), can error out in some of the dumbest cases? It should be simple enough; grab the content of the existing post in the loop and output it. In reality, I can’t tell you how long I spent trying to isolate just why my page output wasn’t actually working.
Thanks to Stack Overflow, I found out that, even inside the a valid post loop, you occasionally have to do some function-wrapping magic to get it to output properly..
It gets worse.
On a recent project, I had to craft a custom taxonomy in a plugin. No big deal, right? Well, in this case, I wanted to utilize the category box in the editor, but DIDN’T want it to display hierarchical structure.. No big deal, right? Wrong. Turns out WordPress does NOT like it when you force using the category box on the editor with non-hierarchical taxonomies.. Sometimes. Yeah, I’m not kidding. It worked fine on a staging server, but when pushed to live, it would NEVER save term assignments in the posts.
Those are just a few examples of the failings, but let’s move on.
WordPress’ development is shy, preferring to let plugins take the spotlight
Even though WordPress has become much more than blog software, the WordPress development team prefers to let plugin (and even theme) developers take the lead in building out its functionality.
There are a number of critical features that any new WordPress site must have in order to succeed. Security plugins like Wordfence, SEO from Yoast, and analytics from MonsterInsights add 3 core necessary features that WordPress should have built-in years ago.
Hell, for years, even content was left to themes & plugins until Gutenberg. Gutenberg was a huge deal, and a shocker that it even came about. Finally, WordPress had a basic system to do real page layouts beyond single columns and floating an image to the left or right. You can even add new blocks to Gutenberg, which makes it even more useful.
Then you get to the point to where you’re thinking about doing more than having a few pages and a blog. Lets say you want to have a blog where you do movie reviews; having a star rating system seems pretty important, right? Maybe even setting your template up so you have the film title, release date, genre, etc all searchable and sortable is on your mind.
Well, you’ll either need to create your own custom fields and taxonomies (or even post types) through your theme/plugin, or utilize CPT-UI and Advanced Custom Fields.
WordPress HAS support for custom fields, post types and taxonomies. It has had that support for a long time.
It has also, however, never made the effort to make it easy for anybody to make their own without knowing how to code or utilizing the aforementioned plugins.
That’s just sad, in my opinion. WordPress could go almost completely content agnostic if it would just build in a better system for custom fields, post types and taxonomies.
I guess when you’ve got a huge market share and a lot of people not willing to expend the time and money to switch, you can be lazy.
Craft CMS is an interesting alternative; I actually considered switching to it myself just because it is so content-agnostic compared to WordPress, but.. I’ve got SO MUCH invested in WordPress as-is, and need to keep my skills up, that I can’t justify switching.
I could go on, but I think you get the point.
WordPress may be the most popular CMS for the web, but that hardly makes it the best. Some day WordPress may become unseated from its throne, and the developers better get a clue soon.