Why would I say such a thing? I’m a WordPress developer!
Here’s the thing: I’m a realistic WordPress developer. I think it’s more important to know the things that are wrong with something you love so that you can work
around with them.
When I say WordPress sucks, what I really mean is that it’s the best, but nothing is perfect.
It’s not a real CMS
It’s really good for creating post and page content. But if the site you’re creating needs a gallery of team members, each with a bio, and displayed in various ways around the site, it’s a pain. You’d need to shoe-horn a posts category, hope that each team member only needs one image, and possibly get involved in some HTML table horrors.
Solution: The Advanced Custom Fields plugin lets you turn WordPress into an easily configurable CMS. It’s both easy to set up and very easy to use for your clients. Plus you can hide the normal WYSIWYG editor if it’s not used. ACF is free, but to really make it work you need to purchase the Repeater extension for it.
Specifically, the built-in plugin search for WordPress. You could exactly type the name of a very popular plugin and it’ll suggest a lot of vaguely related, out of date or unused plugins.
Solution: Use Google, download the plugin and install it manually.
The WYSIWYG editor
This isn’t really a WordPress specific issue. HTML editors generally suck. They’re hard to use, and will sometimes introduce empty HTML elements or do unexpected things with your formatting. Even in “text” mode by default it will also add “p” (paragraph) tags that you can’t see, even though you can see the rest of the HTML.
It also doesn’t support HTML tables, you need a plugin for that.
Solution: Be very patient, learn HTML, or both.
Inconsistent function names
I suppose this is really just a pet-peeve. WordPress has grown over a long time, and for some reason they like to occasionally add “the” into function names. When writing a theme template, the_something() outputs something. get_something() returns the data so you can put it into a variable and change it before you output it. But for some functions, they’ll be called get_the_something(), and get_something() causes your code to fail. I wish they’d make it consistent.
Then sometimes there’s no alternative, you have to output it – or write the code yourself.
Solution: Consult the WordPress documentation, and have a good memory.
WordPress uses MySQL database. If you create a menu item on your site to /about, it stores it as example.com/about – so when you migrate the site you need to run a search + replace on your database. You’ll upload the site and the home page will work, then you click any link and be taken back to the development site. You’d better be good at noticing the URL changed, because there’s no other way to know this is happening. And you can’t just run a text search and replace on the SQL dump file, because WordPress serializes data.
Solution: Deal with it (*flips down sunglasses*)
These aren’t major problems. Once you get to know them, they’re pretty easy to work around. WordPress is way better overall than any other website back-end.[Image: Jake Christopher]