tags:

views:

1018

answers:

6

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.

+5  A: 

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.

Devin Ceartas
@devin-ceartas : > tracing the logic from the start of a request to a pageHow we can do it in a code ?
justjoe
I was reading the code.
Devin Ceartas
i thought you on making some debugging function or pluggin ;D
justjoe
"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...
Gaia
+22  A: 

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".

ceejayoz
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."
Finster
@Finster WordPress lacking any sort of cache is like Windows shipping without NotePad or WordPad.
ceejayoz
+2  A: 

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.

gahooa
A: 

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.

PiotrLegnica
No i18n? Blatantly false, it's built in. http://codex.wordpress.org/I18n_for_WordPress_Developers `$hello = __("Hello, dear user!");` Same thing for date formats - http://codex.wordpress.org/Function_Reference/date_i18n
ceejayoz
Not in templates.
PiotrLegnica
A snippet from newest version, wp_content/themes/default/single.php: http://codepad.org/yU2Kaoe6
PiotrLegnica
Nothing prevents you from using the l18n functions in theme templates. The theme I coauthored certainly does. http://tarski.googlecode.com/svn/translations/trunk/
ceejayoz
I know that nothing prevents me. But the default template doesn't have that. And given that it's ugly (IMHO, of course; I'm templating zealot ;)) PHP-with-HTML, then I'd like to be able to use default and have i18n at the same time. I can't, and that's what I was referring to, not to the lack of i18n capabilities in the core.
PiotrLegnica
OK, so by "not in templates", you meant "it's not implemented in some specific templates". That's a rather significant difference.
ceejayoz
I've edited my answer, I hope this is clearer.
PiotrLegnica
Much better. Thanks! :-)
ceejayoz
A: 

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.

GmonC
Well, again, I would like to understand the negative vote so I could improve os just delete my answer? Did the voter at least tried to read the OFFICIAL wordpress link I gave http://core.trac.wordpress.org/browser/tags/2.8.4/wp-admin/includes/template.php, and check why I considered a mess (it's even written in the official module itself)?
GmonC
A: 

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.

Matt Costa