10 FREE tips to make WordPress more usable

Opinion — When a user faces a difficulty, I only know of one suitable option when it comes to usability: It is to make the software take the decision for him (‘best default’). And when such a thing is not feasible, I only know of one fallback option: It is to make a button.

I’m aware this may sound silly to many a developer. Typically, they put the ‘freedom to decide’ or a ‘learning curve’ forward and miss the fact that they should be the ones who should need to make the extra step to use the tool in ‘expert mode’. Open source developers are generally hardly concerned with UI design issues. Even though there may be a lot of money to be made in the field of open source usability.

I’ve these thoughts because Matt Mullenweg, the lead developer of WordPress, triggered a lengthy thread in the WordPress hackers mailing list:

I’m curious how the list thinks the community could be improved to avoid the concerns voiced in comments like this

I found this amusing, in some ways. WordPress is possibly the most powerful distributed conversation tool there is, and this topic ends up in a mailing list. Sad.

This remark set aside, what have we got when we take a closer look at the critics?

  1. Users don’t want to look for plugins or themes
  2. Users are not even remotely interested in changing a simple php tag in their template files
  3. Users wouldn’t care much if someone tried to explain how to do this in a forum

In short: Users want a packaged product, with best defaults, and buttons. Incidentally, that is something akin to the CMS theme I am working on. Using it, Caroline could have added a feature such as ‘recent comments’ to her web site in one click. Not ‘add the following tag here’ (why not a relevant do_action?) or ‘replace this tag by this new one’ (why not add_filter?). Just one click in the plugin menu.

There’s not much more to usability besides best defaults and buttons. I should probably mention cancel buttons too. Cancel buttons don’t have to do anything, but it is basic usability to always provide a cancel buttons — Users are scared to death when none is around. Everything
beyond this is about auto-correcting common mistakes and making things look as usual, because errare humanum est and users spend 99% of their time somewhere else.

Consistent with these ideas, I suspect the following usability basics would be more interesting than trivial and/or meaningless details such as resizing the excerpt box and reorganizing the admin menu:

  1. Deliver a packaged WordPress install with a collection of plugins and pre-built themes that auto-detect said plugins on a if(function_exists('plugin_blah_blah')) basis like the Semiologic theme and CMS — That way, a user can customize his theme in a mere few clicks and start blogging immediately.
  2. Deliver a hosted version of WordPress — Users pay to blog. The button should read ‘Buy a hosted WordPress’, not ‘Download WordPress’. Let the default class of users — the ones who pay for their hosting — buy their hosted version of WordPress as the default means of getting the software. Odds are very strong a host will be willing to sponsor WordPress bandwidth and more in exchange for this strategically placed button.
  3. Add a Preview button — Yes, I’m aware you can mimic this. But add the Preview button — that’s how it’s called. This, the spell checker and the wysiwyg editor are like the most basic features for a publishing tool. No credible usability expert should miss any of these three points in an audit.
  4. Add a spell checker — Yes, it’s bloat. Include the plugin and enable it by default.
  5. Hide all the HTML markup via a wysiwyg editor with a built-in image uploader — A debugged version of HTML Area should be present and enabled by default, and Markdown should be the default text rendering engine (textile is not intuitive enough) when HTML Area is disabled. And a hook should make these plugins mutually exclusive.
  6. Include inline post, comment, category and link editors in the default themes, i.e. a bit like WordPress Touched. Add a readily available new post, new category, and new link buttons, right-click blog components such as ‘Just Blog-it’ for Firefox for each of the main browsers, as well as a
    decent search feature on the blog. And there’s hardly any need to go to the scary looking admin area anymore.
  7. Add an onunload event on editors to trigger a confirmation request when the user leaves without explicitly saving — I can’t be the only one who is losing drafts on Ctrl+w…. An autosave feature would of course be better, but it should not be an option unless you feel like programming a multiple undo button and storing the stack of changes since the post’s creation.
  8. Replace user levels with user groups — It is more natural and easier to understand. Suggestion: Administrator (may do everything), Editor (may publish and edit posts), Contributer (may submit drafts), Moderator (may edit comments), Registered User (has a login) and Guest (no login).
  9. Use natural language rather than URIs to insert links — No normal user in his right mind I know of spontaneously writes about <a href="http://wordpress.org">wordpress</a>. URIs look like throw-up and taste like throw-up. This is because they are throw-up. I suspect users may spontaneously link to [WordPress->] if it results — as does on this web site — in a link to WordPress. My smart links plugin should be available with the release of WordPress 1.5.1.
  10. Get rid of trackbacks and pingbacks, and use an auto-discovery service instead — I’ve previously discussed what could be a credible alternative to trackbacks and pingbacks on this blog. Said post sucks, but the points remain.

Obviously, there would be a lot to add. Especially if you enter the realm of more complex UI matters. Like contextual help that changes links to the documentation based on what the user is doing, i.e. the context, in addition to being positioned where appropriate. Or posts that auto-discover related posts based on a graph analysis. But I guess the above straightforward and simple points are a good enough start for WordPress, and require little or no effort.

My $.02.

Update: Revisiting this three years after the post, many of these points have been implemented since.

Comments on 10 FREE tips to make WordPress more usable

  1. Wow. It’s like you took a peek into my brain on this post. I agree completely with all of your thoughts, and I can only hope that someday a lot of these are incorporated in later versions. Wordpress could be a lot more user friendly and therefore more accessible to the public if these were incorporated.

    On this topic, a big problem I have with a lot of plugins is the poor readme or poor install directions that come with it. As a user of wordpress who has zero to -1 knowledge of php, I find most plugins over my head. I manage to fumble through them with trial and error, but it took me a while to even figure out what the heck “the loop” was! It would be nice if all of them were written with both the pro and amateur in mind.

  2. Denis, a lot of good points here about WordPress usability (even if I don’t agree with you 100%). The biggest issue is really the lack of easy-to-install, sophisticated themes. If it were easier to get the look & feel that people wanted from the defaults then people would be much happier. Especially if said themes supported popular plugins out of the box.

  3. This message in the mailing list:

    > There are so many custom themes CENTRALLY available, it might take you an hour to browse them all.

    As a rule of thumb in usability: Users hate to choose. Depending on what you tell them will happen once they make their decision, they’ll either be intimidated (“Help! There are too many options!”) or scared to death (“Help! I might do something wrong!”).

    Assuming you have no reasonable way to transform a complex question into a series of Yes/Nos, users want to choose from a safe shortlist with no more than 4 items. This is the maximum number of items a user can handle without effort. And incidently, there generally is no need to bother a user with more than 4 options.

    When such a need arises, though, it is good to know that the maximum number of option becomes 7, +/-2. This is the maximum number of items a user can take into account when making a decision.

  4. > 8\. Replace user levels with user groups

    Some very good points.

    Regarding point 8, I have a few ideas and have a started work on what will be a usergroups plugin.

  5. I like the direction you’re going with these ideas, but I’m afraid that some of them would turn WP into yet another lumbering PHP monstrosity (see PHPNuke). I’m a big fan of the Firefox/Thunderbird mantra of “only what you need and no more” combined with the ability to expand the feature set with plugins. So I hope that things like inline editing, wysiwyg editing, etc are plugins. Maybe there should be a “WordPress+” plugin pack for download on the main site.

    Also, wouldn’t using Markdown fix #9?

  6. Jackson, some interesting points but I’m not sure that your comparisons are really fair.

    Firefox/TB are fantastic in terms of useability. The interface is simple and clean versus WordPress which could use a serious facelift on the admin side. Typically when programmers add more features they end up adding more GUI widgets which leads to a cluttered interface. But if you take a step back and add in features that 99.9% of users will want enabled, then you don’t need to add an in-your-face widget to activate it — it can be safely buried in an obscure dialog or even in a config file. That same philosophy is used in FF/TB: there are tons of options and tweaks you can do but they aren’t available from the GUI.

    PHPNuke (which I haven’t used first-hand) has a reputation for being extremely configurable but I’ve never heard praises sung about its usability…

    I love Markdown but I think that Denis prefers the syntax of his smart-link plugin… :)

  7. @Jackson:

    I’m a big fan of the BeOS mantra of “always the best defaults for the clueless user”, which I find more relevant than the Firefox mantra. Indeed, the Firefox — in fact: Linux — mantra downgrades all too often to “only what geeks found useful for their nerdy purposes”. Thus, I find a geekish “WordPress-” package is a more relevant way to go than a “WordPress+” package.

    Regarding point #9, the idea behind my smart link project is that users should be able to insert links using natural language rather than uri, _e.g._ “[my link-> blah]“. The plugin then finds the most relevant piece of data on the blog, and turn the smart link into an html link — or remove the smart link if there is nothing relevant to link to. Thus, it is immensely more user-friendly than anything Markdown will allow regarding links.

  8. jerome:

    I think we’re saying the same thing. I like the FF/TB philosophy a lot, and would like to see WP keep the same path. This does not mean it’s perfect by any means. As you mentioned, the admin UI is a pain. I’m more concerned about features that will add bloat without improving the user experience. Thinking about more, I can see a wysiwyg editor being a great help to inexperienced users, but I hope every new feature has to fight hard to be included.


    I’m not sure I see how Firefox fits in the classic engineer/linux geek as-many-buttons-as-we-can mentality. The classic Mozilla suite certainly fits this profile though. I feel that FF is much closer to the BeOS (and now GNOME) model.

    I think you misuderstood my WP+ idea. Keep the core WP package lean and mean, and provide a separate file with some helpful plugins. This would be easier if there was a package format for WP plugins that would make distribution easier.

    I think the smart link idea is an interesting one, though at first glance some of the syntax looks a little geeky (eg `[projects->./../]`). I really like wiki-style linking and your plugin looks like a better solution than others I’ve seen. I look forward to trying it out.

  9. @Jackson:

    The geek mentality, I think, is not about having as many buttons as you can. It is about giving all users an option they shouldn’t even have in the first place for the sake of letting a handful of nerds control what is going on.

    Thus, I would qualify Gnome, which I find everything but impressive, is geek model driven rather than best default model driven. The Gnome devs are arguably doing a good job at making a pretty interface. But at the same time, and in spite of thier usability guidelines, they’re doing a terrible job at making the interface user friendly. Namely, I am still handling packages and dependencies. And configuring a network device is hardly user friendly. Fact is, there should not even be configuration options. Gnome should take care of the configuration — including security based on context — by itself in all but the most horrendously difficult situations (_e.g._ it can’t decide which screen resolution the user wants).

    Firefox is better. It is the only open source software I know of that I would qualify as usable. Nonetheless, I find it disturbing that some basic features, such as ‘Disable targets for downloads’, ‘AdBlock’, or ‘ConQuery’, are only delivered as plugins. Moreover, the bookmark manager is enfuriatingly buggy — and lacking, when you’re toying with exports and/or Live Bookmarks.

  10. Denis:

    I would hate to drag this into an open source usability flame war, so I’ll simply say I mostly agree with your framing of the ‘geek mentality’ and disagree with your comments on GNOME.

    I think the plugins you mention with regards to Firefox are good illustrations of my feelings towards WordPress. In my opinion the ‘Disable targets for downloads’ would be a good addition to the default feature set. It routes around buggy developer behavior to the benefit of the user. I think the ConQuery plugin is another matter. The features allowed by ConQuery are too similar (but not the same I admit) to those supported by the Firefox search box, but are hidden in a non-obvious location. AdBlock is a little ambiguous. With a better configuration interface I could see it being standard, but could also see objections in that it modified page content to an unacceptable degree.

    Ok, to bring this back on topic… You and I disagree about which plugins would make good features for Firefox. We also disagree on what plugin features would make good built-in behaviors for WP. I feel like the WP devs should er on the side of simplicity except when the feature presents a significant usability improvement to the vast majority of WP users. This means WP needs to clearly define who its users are and ideally have a process in place for reviewing feature requests.

  11. > I would hate to drag this into an open source usability flame war

    No taunt was intented in any way. ;)

    What more, you and I are saying mostly the same thing, really. A modular design with a plugin architecture makes a software easier to maintain, and to be frank there are times where I wish some of the WordPress features were in fact plugins that I could disable and/or override more easily. Namely the template tags, which I find ill-designed. That to say, I see many good reasons to have a WordPress package around on the developers’ end, with only a very limited selection of core files.

    On the end-users’ end, I think the standard WordPress package should be bloated by default. Not so much because bloated is better. Rather, because most users prefer to have a wysiwyg text editor, for instance, so it makes sense to include a wysiwyg plugin and to enable it by default in the distribution package. I think the geek should be the one who needs to press the disable button.

    Thus, the only point where our views differ, if anything, is that I think the default package should be WordPress Fat, with WordPress Light as the developers’ package; whereas it looks as if you’d rather see WordPress Light as the default package, with WordPress Fat as the user’s package. It’s a quite typical debate, if I may. ;)

  12. > Thus, the only point where our views differ, if anything, is that I think the default package should be WordPress Fat, with WordPress Light as the developers’ package; whereas it looks as if you’d rather see WordPress Light as the default package, with WordPress Fat as the user’s package. It’s a quite typical debate, if I may.

    I think you nailed it :)

  13. Wow, that has to be the most civil and reasoned debate I’ve seen on a weblog in a long time! I must have connected to the wrong internet this morning… :)

  14. “Replace user levels with user groups”
    I very much want something like this, although not exactly like this. My first idea was “I want to be able to group registered users into custom groups and give accesibility to certain posts or certain categories ony to certain groups”. My second idea was “I want to be able to edit what each user level can do”. At present there is nothing like this (ViewLevel does not do what I want because 98% of my audience should never be allowed to post anything to any of my sites, so I’m not promoting anyone above ‘1’).

    As for the styles vs templates vs themes issue, I’m savvy with a lot of stuff but still groping with php. My main gripe with themes is that the css isn’t modular, and I have to hunt through a copy of a generated page to find out what something is called (div id or class) so I know what to change. Do all designers forget about the importance of degradability? Because some people still surf with css off. I don’t want umpteen div ids that all basically say ‘font-size: 11px;’, I want to define ‘small’ as ‘font-size: 11px;’ and have umpteen instances of ‘small’ tags throughout the page, wherever needed.

    Ok, end rant. :)

  15. Hi Denis, Congrats and thanks for a wonderful CMS and theme – U ROCK dude!

    Curious, how would I insert a page header colored background image? I would still like the title and description, plus login+ links there, but the background image to appear below those links. Would you recommend the php file and line location to add my image?

    Thanks once again, Denis.

    Cheers! Sherman