Why WordPress sucks

David Nash wordpress 33 Comments

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.

Plugins

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.

Absolute paths

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*)

Conclusion

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]

 

 

 

Comments 33

  1. Yeah I get the short comings in WP from a development point of view, but from a consumer and price point of view it’s amazing! after all the days of small business owners getting shafted 10K for a basic website are done. Great post BTW

      1. I would say if you are facing unemployment because of a platform then the issue is not with the platform. It has to do with how you are working against something so successful.

        shoot me an email if you would like to find out ways to turn this around for you.

  2. I’m not a real WP dev but used it a lot against my will ¬¬
    What I hate about WP is that it is very hard coded, it’s slow and the databases are horrible.
    Then if it is used only for simple pages, blogs… and you don’t change too much themes or plugins it’s ok… but hell comes when you try to customize anything.
    Stepping styles, creating hacks to make it work… its unpolished, absurd…

    I came to this 2 conclusions:
    1) you spend a lot more time learning how to hack and hard code wordpress, and learn all php functions they did (creating child theme, the functions calls, your custom style, its so awefull!) and still getting a slow bad coded site
    then creating your own CMS.

    2) clients ask for it because it’s popular (being popular doesn’t mean it’s good)

  3. PD:the last site I did in WP used this same theme you use here (x theme) lol
    The porfolio section took me 15 seconds to fully load… thats ridiculous (not you, WP)

  4. WordPress is a terrible solution to anything but the most basic blog. The plugins are all created by amateurs with no idea about real world programming experience. The result is sloppy, buggy and slow code which also result in even more security problems – as if the core system didn’t have enough. Please stop using WordPress people, you are not doing yourselves or your clients any favors.

  5. I’m interested in your view of Squarespace as a blogging platform vs. WordPress. My experience so far is I FAR prefer their WYSIWYG editor compared to wp. The big drawback is SqSp’s constraints they have in their templates are really annoying after you find out the template you chose doesn’t have options A, B, or C, but this other one does . . . but . . . surprise! You need to built your whole damn site again!

    Anyway, rant over. I will say that WordPress is very flexible, but it seems like the problems I encountered with it years ago have been alleviated with the switch to SqSp.

    Thanks for your blogpost! – Daniel Maurer

  6. WordPress developer for 7+ years here. Lately my solution to all of the above and more (don’t get me started on short codes) is to ditch WordPress completely and use Craft CMS. I spend so much time in WordPress just trying to hide all the crap it forces on you because it assumes so much. In its defence, it needs to make content model assumptions in order to be a theme-able system… but in all my 7+ years of WordPress I’ve had a client change their theme themselves maybe once.

  7. WordPress is an evil time sucking vortex from hell. Ive been trying to learn how to use it since june of 2012 and still have virtually nothing to show for my efforts, and no online website. For anyone to say this is an easy app to use is a willfull deception. Everytime I spend a few hours in Instant wordpress to try and come up with something…anything useable I wind up wanting to cut myself. If youre new to WP, be prepared to spend lots and >I mean lots of time trying to figure this out and get your doctor to give you a prescription for heavy dosages of anti deppressants. ( Im not kidding ) Heres a facebook page dedicated to the difficult struggle of using WordPress. https://www.facebook.com/IHateWordPress/?fref=ts

    1. I’ve been creating websites for clients, on and off, for seven years, and I won’t use WP. If a client insists on WP, I refer them on. It’s not worth the pain.

  8. WordPress is very good if you install it, use a free theme, put a few pages online and call this a site. It can look nice and cool.

    But if your site gets big with many posts and images (I mean thousands of) then your site becomes slow because everything in the database is in wp_posts and wp_post_meta and it has an awful DB architecture!

    In the beginning about a year ago it was fun starting to code for WP. Now I think that it is not a software for developing big and serious websites! You can have one SQL query be repeated 13 times in one page load in different functions. WP functions are slow, plugins give errors and are often incompatible with each other, the documentation is not full and you can not count on it. I can go on and on with many situations in which hours of work were spent in debugging code rather really developing.

    At the end you ask yourself is it really worth it no matter that there are so many themes and plugins out there? I am beginning to hate it …

  9. I’ve been developing exclusively with WordPress for about 6 years now, have launched over 100 sites for very happy clients, launched a niche hosting business and have created a very nice development business with WordPress.

    With that said, it does take time to learn. Sites (themes, plugins, core, DB) must be maintained properly to ensure good performance, and coding responsibly is very important to ensure compatibility. I focus on using as few plugins as possible and top of the line plugins (ACF, Gravity Forms, etc…), as well as having a core functionality plugin to remove some un-needed stuff and ensure all non-theme functionality is kept separate to ensure theme compatibility. Additionally, I have a base child theme using the Genesis Framework to keep code as minimalist as possible.

    So, all in all, if you know what you’re doing, WordPress is great. With that said, my niche is small business, so my experience with large-scale sites (>1,000 visits/day) is low.

    Cheers.

  10. I first saw WP some years ago and thought it way over the top for something as simple as a blog. Ended up doing my own code in Perl (because I was used to that) and have’t looked back since.

    I think (may be wrong) that a mentality has developed over the years that for something to be good it must be very large and complicated. Trying to meet everybody’s needs in a single package is impossible. The result appears to be web development software and all most want is just a blog.

    Maybe we should all go back to the KISS rule.

  11. Some excellent replies here. But another disaster is wp_postmeta. You create any custom field, it saves as postmeta. If you want to apply filter or order by those, it joins the full postmeta table, it does not typecast the meta_value. If you need to search by 2 meta fields, it will make 2 different joins on huge postmeta table.

    1. Post
      Author
  12. I could go into all kinds of details but overall I find with WordPress I spend far too much time looking up it’s hundreds of custom functions and far too much time trying to read it’s mind due to it’s labyrinth of assumptions about what template or query it thinks should be in play at any particular point.

  13. I’m starting to wonder if I can deal with the exponentially expanding learning curve that I find myself on, I run a small business and started a free directory to assist others in our industry, since then the site seems to be accumulating problems like one minute we had the browser logo next minute we don’t, then next the font we chose has somehow changed to something else, the list is growing.

    Then we did an update on the theme and found out that our child theme did not work correctly and then lost any other previous edits that had been retained up to that point.

    If anyone is willing to have a go at assisting me with this site I would welcome the input and assistance.
    Three areas I need help with at this point in time are ,
    1/Make the child theme work properly.
    2/Make the listings show in a random order each time a given search page loads.
    3/Remove the recent listings from the Home page so that only the search fields show.

    Thanks for a good article David Nash

  14. Craft is great to create a truly customized solution from the ground up. But in reality wordpress is the halfway point between having a structure which you can modify – its not as truly elegant as craft but will take you less time to develop and you still end up with a dam good website which can be built to preform pretty much any functionality you can imagine. As for speed issues, with descent hosting and quality plugins i have never had issues with bringing decently designed word press websites down to 0.5 to 1.5 seconds. Sure it has its issues – but over time these issues are being addressed and i think the issues are less than any other website framework out there at the moment.

  15. Geez. Lemmee count the ways:

    1. plugins and themes and no way to delete everything they add. simple fix by adding a plugin_id and theme_id to every table. when deleted boom search and destroy across all tables. This is far and away the absolute worst thing about wordpress. It accumulates tables and records that never get deleted.
    2. plugins that add 20 .css files (woocommerce anyone?! yep!)
    3. incompatible plugins
    4. tries to be all things to everyone
    5. posts and pages. the whole concept behind a post is ridiculous confusing every beginner out there. (every damn one of my customers) Limit it to pages. Viola! Zero confusion.
    6. built in f**king useless comment system
    7. with emoji (slap to the face)
    8. no way to turn off the comments.
    9. it becomes bogged down and slow. Saving, editing, etc takes forever even on dedicated servers.
    10. customizr. good for 3 or 4 settings before you realize it’s far easier and efficient to build your own theme options.
    11. code complexity. can take years to learn wordpress because it enormous.
    12. xmlrpc hackers
    13. wp-login hackers
    14. absence of true cron. not only does firing events when a user is trying to load a page make no sense, cron isn’t actually firing at any set interval like it should.
    15. plugin authors exploiting for $$. Most free plugins are “gateway drugs” for paid. Most paid have no preview mode and refunds (codecanyon anyone!?) are rare. most plugins are nearly worthless now without getting the paid version.

    It does fill a void. And it’s better than Joomla and Drupal and Modx. But, my hell, it’s gotten so big and hacker exploited, it’s fast becoming useless to my company.

    1. While you certainly have some valid points, some of these are certainly misconceptions:

      2. There are simple plugins that will combine all CSS files in to one (or JS) that solves this problem pretty easily.

      3. This would be an issue is any type of open-source environment. It is simply impossible for all plugins to play nice with all other plugins, themes, etc…this is not a WordPress issue.

      4. WordPress itself does not do this. All of the themes, plugins, etc create the functionality to give this appearance. Again, not a WordPress issue, just a result of the vast community creating themes and plugins to accomplish anything. Not really a bad thing IMO.

      5. This one is pretty silly. WordPress started as a blogging platform with posts as the main “blog” items and pages as the static pages of the site. Pretty simple and a core feature in WordPress.

      6. Also a bit of a silly comment.

      8. Yes there is.

      9. While certainly not the fastest thing out there, in a good environment saving, editing is not something that is slow.

      10. Agree with you here, not a huge fan of the customizer.

      11. Is there a code base out there that doesn’t take years to learn and be efficient and knowledgeable about?

      15. There are plenty of amazing free plugins, and also plenty of amazing free plugins that have paid add-ons (EDD, WooCommerce, AffiliateWP,etc…). To say that plugin authors are “exploiting” people is ridiculous. They aren’t forcing users to do anything. If there is no preview mode, and you don’t do your research, read reviews, and ask pre-sale questions prior to purchasing, it’s on you!

      Again, you certainly have some valid points, but most of this list is a bit silly!

  16. Thanks for everyone in the comments talking about Craft CMS. I have tried it and loved the Matrix editor, it’s a great idea.

    Also the fact that we can have a proper MVC framework behind it that is well documented and lots of devs can get behind on it’s nothing short of amazing.

    Sure it’s not a perfect fix it all solution, but compared to WordPress it’s years ahead

  17. The title is right but not the explanations.
    Here are some key points that make your claim true:
    1. WordPress is server centric technology in a client centric world. It’s not a real SPA (With all respect, one page with scrollbar is not SPA).
    2. Server-Client blended technology is a thing of the past. It makes development sluggish, complicated and expensive.
    3. There is NO reason for relational DB. When you use ACF you are shooting yourself in the foot since every custom field is a row, not a column! If WordPress used MongoDB for instance they could change the post schema on the fly and add fields to the model without performance penalty. (Custom fields require costly Join operations at the DB since they are rows).
    4. Creating a UI for your taxanomy is VERY cumbersome.

    I have plenty more. But no one will read 🙂

    1. Post
      Author

      Excellent points Yaron, thanks for you comment. When you’re focused on one thing it’s easy to get stuck in a “bubble” and not even see the bigger, better world out there (I’m talking about me living in a PHP/MySQL bubble). Hopefully WordPress will catch up as technology continues to improve.

  18. Hmm…. To have the need for a plugin like ACF for something a CMS should provide out of the box? And what about about searchable content generated from ACF fields? Install another plugin for that? One concern is with this whole plugin architecture and the potential conflict between plugins.
    I generally work with Django or Rails developers for larger websites. But for smaller websites on my own, I’ve been using Couch CMS since the last 4 years and never looked back. I create the templates from scratch, and seamlessly integrate with Couch. It doesn’t interfere with the markup in any way, and allows you to do virtually anything for small to medium websites. Whenever I’m using WP, it feels like I’m fighting with it.

  19. You forgot to mention insecure default configuration, prone to bot attacks. I would be almost w/o a job if wordpress installations on our servers would not be attacked by bots because contact form has no captcha or access to xmlrpc.php bruteforced is not blocked. And did I mention lack of randomization of default login link?

  20. After having numerous pages and parts of pages literally TRASHED by WordPress, I’m moving back to straight HTML/CSS template.

    Apparently WordPress doesn’t approve of anything more complicated than that, and even automatically strips certain HTML tags (and sometimes even its content) if you use the wrong editor.

    Need to add some PHP to a page? Get a plugin (that later won’t be updated and will unexpectedly ruin your pages.

    Need to put divs in a text box for something as simple as anchoring?? Don’t. WordPress might just decide to delete your divs, along with the content if you use the visual editor.

    Simple, don’t use the visual editor, right? Wrong. Want to add some ascii characters to a text box? That’s right, this can only be done with the visual editor text mode.

    Screw WordPress. I learned HTML and CSS from scratch and I’d rather have to code the website from scratch than to use such an unstable, unreliable platform.

  21. Why not try a Headless CMS like Cosmic JS? https://cosmicjs.com

    Cosmic JS is a drop-in replacement for WordPress so you can avoid the pain of building and maintaining the CMS infrastructure yourself.

    I’m biased, but it is the dream CMS for modern website development 🙂

  22. Pingback: Migrate from WordPress.com to WordPress.org - Problems and Solutions

Leave a Reply

Your email address will not be published. Required fields are marked *