Why is WordPress considered to be poorly programmed?

I’m not a fan of PHP or spaghetti code, or anything like that, but in my experience WordPress works amazingly well, it’s well organized, and I’ve never come across any hard to understand code. The documentation is incredibly thorough, any security flaws are fixed within seconds, and it “just works”. Not to mention that it does EVERYTHING, and it has an awesome plug-in system. Oh, and “the Loop” is awesome. I’ve never had any problems doing simple modifications to the code or to themes.

Can you guys give any specific examples of what you don’t like about it, or what you would have programmed differently? I just don’t understand why it gets such a bad rap. I wish my own software worked as well and had as many features and looked as nice.

Related posts

Leave a Reply

6 comments

  1. I’m a fan of WordPress, but there are definitely issues that impede coders trying to work with it. As a small example, there’s get_the_content() (returns) and the_content() (prints), but there’s get_permalink() and the_permalink(). Then, there’s just the_date(), because it accepts an argument indicating whether you want it to print or return. This kind of thing drives even an experienced WP person up the wall, because you’ve always got to be Googling the usage – and it speaks to a deeper lack of attention to detail in the code.

    Another glaring issue is the lack of built-in caching. It even used to have it, but they ripped it out and never replaced it. You shouldn’t need a third-party plugin to have basic caching in a system like WordPress, particularly with all the other bells and whistles it builds in.

    To paraphrase (supposedly) Churchill, though, “WordPress is the worst blogging system… except for all the others”.

  2. I’ve written many custom applications in PHP/MySQL over the years – from tiny to huge. Not having taken the time to learn the details of WordPress, I find it very frustrating to work with (under the hood).

    Subjectively:

    • Very poor naming conventions
    • Execution flow is bizarre
    • General lack of organization
    • Hard to audit what happens when
    • etc…

    Their concepts of usability is great, and support for plugins is also great. I’d just love to see the system re-engineered with those principles, but with a disciplined and clear development methodology.

    I’m sure the next guy would say “no it isn’t, bla bla bla”, but that is just my opinion after bumping into it (hosting, modifying) about 3 times.

  3. It’s a subjective question for sure. From experience I’ve notice WP takes way, way more server resources than other systems or my custom code. I’ve had to move WP sites off my servers as a consequence. So my experience suggests there are some memory use issues.

    As an exercise try going through the code, tracing the logic from the start of a request to a page, and look at how many objects are loaded, how many methods are called before any HTML is output.

  4. Apart from what’s been mentioned already:

    No sane templating system. All those years and they still have PHP code intertwined with HTML, and default templates that have no support for i18n or l10n whatsoever (hard-coded strings, hard-coded date formats, etc.).

    Multiple entry points – maybe it’s just me, but it’s annoying. Especially when some of those are way too big.

  5. When you have to be sure of a statement that is made by “everyone”, if you can, is trying to check it for yourself.

    And you can do something in your statement: just read WordPress source code. Some modules are good, some are a mess, some others are just normal. But all of them compose a great blog system that are used by thousand of people around the world that are more interested in writing good stuff instead of complaining about “how ugly” is a particular source code. In summary, the WordPress creators have a shippable product that is useful.

    In the end, it doesn’t matter. If you want a perfect blog system, you can always write one yourself.

  6. Can you guys give any specific
    examples of what you don’t like about
    it, or what you would have programmed
    differently?

    I would have added more comments.

    On a separate note, the most recent version of WordPress introduced a labyrinthine piece of code that denies access to pages that:
    1. Aren’t in a menu or submenu
    2. Aren’t in the $_registered_pages variable.

    A lot of plugins for earlier versions of WordPress have been broken by this new security measure.

    Finally, sessions. WordPress does its very best to get out of your way by handling all its session data in a separate manner from PHP’s built-in $_SESSION variable, but it doesn’t give you the option of starting the PHP session, you have to add that to the core program yourself. I haven’t found documentation that would allow us WP hackers and plugin writers to take advantage of the pre-existing WP session yet, either.