Home » Questions » Why is WordPress considered to be poorly programmed?

Why is WordPress considered to be poorly programmed?

Answered
1
1

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.

NOTE: This question was originally posted at StackOverflow.com by Philip Brocoum

  • Frank
    I've never used it, but I've had to clean up its mess. Thing has an endless stream of vulnerabilities. Wouldn't touch it with a barge pole.

    NOTE: This comment was originally posted at StackOverflow.com by bobince

  • Andrew
    What piece of code doesn't have an endless stream of vulnerabilities? Isn't one of the core tenets of programming that anything larger than 'hello world' is going to have a bug?

    NOTE: This comment was originally posted at StackOverflow.com by ceejayoz

  • Frank
    Nonetheless, WP has had far, far more than its fair share, including (from the advisories) very basic escaping problems any competent PHP developer should have avoided.

    NOTE: This comment was originally posted at StackOverflow.com by bobince

  • Joanne
    I would maintain that software which is written to do one thing well and not all things possible can often have significantly fewer vulnerabilities.

    NOTE: This comment was originally posted at StackOverflow.com by Devin Ceartas

  • You must to post comments
Good Answer
1
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”.

NOTE: This answer was originally posted at StackOverflow.com by ceejayoz

  • Phillip
    I think this is all valid, but I think there is a conscious choice at Wordpress to not duplicate caching when the cache plugin was doing it better. Your argument is kind of like saying "You shouldn't need a third-party word processor. Windows should just come with a full-featured word processor out of the box."

    NOTE: This comment was originally posted at StackOverflow.com by Finster

  • Andrew
    @Finster WordPress lacking any sort of cache is like Windows shipping without NotePad or WordPad.

    NOTE: This comment was originally posted at StackOverflow.com by ceejayoz

  • Mike
    Nice paraphrase

    NOTE: This comment was originally posted at StackOverflow.com by Andrei Rinea

  • You must to post comments
6
0

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.

NOTE: This answer was originally posted at StackOverflow.com by Devin Ceartas

  • Ellen
    @devin-ceartas : > tracing the logic from the start of a request to a page How we can do it in a code ?

    NOTE: This comment was originally posted at StackOverflow.com by justjoe

  • Joanne
    I was reading the code.

    NOTE: This comment was originally posted at StackOverflow.com by Devin Ceartas

  • Ellen
    i thought you on making some debugging function or pluggin ;D

    NOTE: This comment was originally posted at StackOverflow.com by justjoe

  • Jeffrey
    "From experience I've notice WP takes way, way more server resources than other systems" - might be true from your experience until you work with magento...

    NOTE: This comment was originally posted at StackOverflow.com by Gaia

  • You must to post comments
1
0

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.

NOTE: This answer was originally posted at StackOverflow.com by Matt Costa

  • You must to post comments
1
0

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.

NOTE: This answer was originally posted at StackOverflow.com by GmonC

  • You must to post comments
1
0

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.

NOTE: This answer was originally posted at StackOverflow.com by Cat Plus Plus

1
0

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.

NOTE: This answer was originally posted at StackOverflow.com by gahooa

  • You must to post comments
Showing 6 results
Your Answer
Guest Author
Post as a guest by filling out the fields below or if you already have an account.
Name*
E-mail*
Website
CAPTCHA*
Enter the characters shown on the image.