10 Changes To WordPress That Would Make It A Killer CMS

[zenphoto src=”wp_04_large.png” class=”align-right”]

Since going freelance, I’ve supplied customers with a number of “WordPress as a CMS” solutions. Not only because WordPress is free and fairly userfriendly, but because for most websites WordPress is more than enough and certainly more than solely a blog platform. So much, in fact, that I’ll bet you WordPress is the next big thing on the CMS scene. It’s just waiting to happen, like a big secret waiting to pop out and say “Howdy”.

What’s keeping this? A few things. Besides the necessary critical mass of not-blog-only-websites sporting WordPress, there are just a few hurdles keeping WordPress out in the cold. There’s the “isn’t WordPress that free Blogspot-like website?” confusion (for the love of goodness couldn’t you have called it “WordPress-Spot”, “Spotpress” or just about anything else than WordPress.com?). Besides that, there are a few technical and therefore solvable issues, which I have tried to collect here.

1. Multi Language Support

[zenphoto src=”Gengo.jpg” crop=”tl” height=”148″]

For a CMS to be taken seriously, it has to have translation features. It’s like showing up to a black-tie party without a tie. It doesn’t have to be lavish and overly complex, quite the opposite; simply define your languages in an options page to gain access to writing your posts and pages in a second language.

Sounds simple enough? Apparently not so. The one plugin that currently does this, Gengo, is exceedingly buggy. SitePress looks promising and pledges to deliver this functionality properly.

2. Better Custom Fields

[zenphoto src=”More-fields.jpg” crop=”tl” height=”200″]

In order to properly mold a WordPress theme to not just be a blog, we need to be able to define specific and separate content areas that hook up to your WordPress post and page editors. Imagine a book review website. You’d probably want to provide a special area to show the book author, ISBN number and possibly an Amazon link. That would be three extra input fields in your admin interface, outside of your text body.

Fortunately you can do this already using the More Fields plugin. It’s fairly straightforward to use and does exactly what it needs to, so much that it deserves to be part of the official WordPress core package.

3. A “Refresh The Image Cache” Button

[zenphoto src=”Purge-cache.jpg” crop=”tr” height=”200″]

Ensuring proper image upload and management features probably constitute the most difficult and most important part of a good CMS. Since version 2.5, WordPress has sported an excellent upload feature that crops and scales your images according to configurable widths and heights. This works well; you upload a large “source” image, which is then automatically scaled to thumbnail, small, medium and large sizes which you can then insert in your posts and pages.

The only problem is, if you upload a new version of the source image, or if you change the media dimensions, you have to jump through hoops to ensure that thumbnails and scaled images are properly refreshed. The worst part: you have to do this for your entire website and all its archives, post-by-post.

Zenphoto gets this right. Inserted images are simply symbolic links that point to the lavishly large source image. If you change media dimensions (for instance: thumbnails are now 50×50px instead of 40×40px), you have only to click “Purge Cache” and the next time a visitor views the image, it’s re-rendered automatically.

WordPress would do well to learn from this. Until then, you can use my own plugin, Zenphoto Shorttags, which works in tandem with Zenphoto and inserts image symlinks in this fashion:

[zenphoto src=myimage.jpg]

Images in this very post are inserted that way, but it would be far more elegant if you could upload your images to WordPress instead of to a second CMS.

4. WYSIWYG Everywhere By Default

[zenphoto src=”WYSIWYG.jpg” crop=”tl” height=”200″]

My programmer friends dread WYSIWYG editors (( What You See Is What You Get, commonly referred to as “Word-like editing” )) and keep them at bay with garlic and crosses. The way I see it, as long as you can switch to HTML, WYSIWYG is far superior and should be default. Everywhere.

HTML is the new terminal. People shouldn’t have to write HTML unless they bloody well ask for it. You may not feel like this right now, but trust me, you will; web-apps everywhere are canonizing WYSIWYG right now and Gmail started it.

So why aren’t WordPress Widgets WYSIWYG? Why aren’t comments? Why aren’t custom fields? I’ll bet you they will be in time, but until then you can WYSIWYG your comments using MCEComments (( As a sidenote to this, my own Quote Comments plugin is now MCEComments compatible )).

5. A Widgets Overhaul

[zenphoto src=”Widgets.jpg” height=”300″ crop=”tl”]

Widgets are drag-and-droppable content containers, which you can put somewhere on your website. There are calendar-, comments- and posts-widgets, not to mention simply text containers. Unfortunately, the interface for adding and removing widgets is surprisingly terrible and very confusing. K2 (as seen in the above screenshot), gets it pretty much right.

It’s not even rocket-science (possibly just a bit of usability science, if that) to improve things. The first thing to do would be to give the Widgets section its own button in the main WordPress navigation, and rename “Appearance” to “Themes”. This, I think, would do wonders in its own right.

Secondly, WordPress should stop using the word “Sidebar”, when really we’re talking about Widget containers. Getting rid of the pulldown menu (that allows you to pick between which container to add to) in favor of simply showing every available container side-by-side would also help.

Finally, all the default widgets would do well with a little tender loving and care. For example, “Textarea widget”, arguably one of the most important of the Widgets, doesn’t support WYSIWYG (see item #4 in this list).

6. Un-Mystify The Page Overview Screen

[zenphoto src=”Pagemash.jpg” crop=”tl” height=”200″]

Pages have been part of WordPress since version 1.5. Unfortunately, things haven’t really changed much since then. The Pages section of WordPress simply shows a paginated list of your pages, subpages badly indented.

If things were done right, pages would be properly intented and shown according to their sort-order. This sort order would be drag-and-droppable, possibly in a tree-view list. Very special attention would be added to the special pages that you decided were your home- and blog-pages respectively, and you’d be able to set those, right on the Pages section.

PageMash helps out with the drag-and-dropability of your pages, but nothing more.

7. Let Us Hide Pages From The Menus

[zenphoto src=”Pagemenu.jpg” crop=”tr” height=”200″]

Pages are great content holders, but by default all your pages show up in your page menus (navigation and sub navigation). If WordPress is to be your entire website CMS, you have to be able to create pages that has nothing to do with your main website. Pages that do not show up in your main menu. For instance, microsites, party invitations, privacy policies and other such things that you really do not want main-navigation links to.

To hide such items, today, you have to edit your theme files and add cryptic IDs to a comma-separated list of pages to exclude. Wouldn’t it be far more elegant with a simple checkbox on your page edit screen?

[Update]: CMS Navigation plugin does this. Not perfectly, but close.

[Update]: Exclude Pages plugin does this, perfectly!

8. Improve The Media Insertion Dialog Boxes

[zenphoto src=”Media_insertion.jpg” crop=”tl” height=”200″]

Right now, only WordPress.com users get all the fun. They have shortcodes for easily inserting YouTube and Google Video, while WordPress normies have to copy/paste the embed codes hoping things aren’t borked by WordPress.

Things could be even better, though. Inserting embedded media shouldn’t be any different from using the “Paste from Word” button that comes with the Visual (WYSIWYG) editor.

Additionally, uploading video files, be they Flash (flv), Quicktime (mov) or any other format, WordPress should supply players and embed codes that did the HTML work no different than if you were inserting an image. Finally, the whole process of inserting images could be optimized. My own Flash Shorttags plugin helps you insert the Flash, but not as elegantly as it should be.

9. More Post-Image Features

[zenphoto src=”Tag-images.jpg” crop=”tl” height=”300″]

While confusing at first, the idea of “uploading images to a post” is a good one. It enables us to show a thumbnail-sized post image on excerpt pages, or as a post teaser on the frontpage (which, these days, is wildly popular on websites such as Joystiq and Lifehacker).

So why can’t we upload images to categories or tags? Why can’t we write category or tag descriptions in wonderful WYSIWYG? Probably, no-one thought about it.

Until we can, you can implement a subset of this using powerful magic from James’ bag of tricks.

10. Allow Fine Grained User Role Management Control

[zenphoto src=”Role-management.jpg” crop=”tl” height=”150″]

While little you do in WordPress makes irreversible damage (especially since the inclusion of post revisions), some things do mess things up. That’s why you’ll always want there to be administrators, editors and sometimes even contributors. Right now, however, these roles and capabilities are set in stone and not configurable. Role Manager is there to help but unfortunately, I’m told it’s not quite as compatible as it could be, and really, this functionality should be part of the WordPress core.

Further Reading

24 thoughts on “10 Changes To WordPress That Would Make It A Killer CMS”

  1. Olly Hodgson says:

    Some very good suggestions here.

    In addition, I’d add version control and rollback for everything (pages, posts, uploads, plugins, etc), and better media management (i.e. to better handle uploads of media other than images).

    A fine-grained workflow system would be ace, including permissions (e.g. Can edit things, Can approve things, Can publish things) and making it apply to everything (e.g. posts, pages, uploaded media, categories, etc…).

  2. Thanks for the K2 mention, though it should be said that our Sidebar Manager has actually been taken out of the core; too much of a hassle to maintain.

  3. Joen says:

    Olly Hodgson: In addition, I’d add version control and rollback for everything (pages, posts, uploads, plugins, etc)

    That would be excellent indeed.

    Michael Heilemann: Thanks for the K2 mention, though it should be said that our Sidebar Manager has actually been taken out of the core; too much of a hassle to maintain.

    I can imagine. Nonetheless, you got the management mostly right, and WordPress could learn from you.

  4. Patrick Daly says:

    EXCELLENT post! I really hope the WP team is considering several of these. A couple of the suggestions are just no-brainers that should have been in WP for years now.

    1. Joen says:

      WordPress.org did a poll a while back of features they were considering. Off the top of my head, some of those features were:

      • Custom fields makeover
      • Media shorttags
      • Widgets overhaul

      Those were some of the features, of which you could prioritize which you’d want to see added first (to 2.8). So at least some of these features, in some form, are being worked on (most likely).

  5. db says:

    Add this one:

  6. Thanks for the linkage! (I see that I should add a screenshot to better explain what I’m doing)

    What I miss with regards to the WYSIWYG editor, is a way to add and remove buttons from the editor’s bar. I’d like to add H2 and H3 buttons to the post-edit screen for example. It’d go a long way to improve semantics of client-edited parts of the website.

    1. Joen says:

      James John Malcolm: (I see that I should add a screenshot to better explain what Iâ

    2. Joen: Did I misunderstand what you were trying to do?

      No, no, not at all. It just has it’s limitations – you can’t have the image show up next to the category name in a menu list for example.

      Plus, reading through it again made me see that a simple screenshot would help understanding a lot, make it quicker.

      You did just give me an idea of mixing the page-insertion code with randomising code and/or having multiple page insertions1. it doesn’t make that much sense to have a random story every time, but for images it does (or can)!

      [1] By simply having numbers behind the titles…(it’s so obvious, can’t believe I didn’t think of it earlier)

      BTW. You footnote extention apparently also works for comments. It just adds a link, nothing else, by itself though. I had to help it a bit.

    3. Joen says:

      James John Malcolm: No, no, not at all. It just has itâ

  7. Jenny-fa says:

    I agree with everything, though I despise WYSIWYG. Even the way the acronym’s pronounced is idiotic.

    However, I do see the merit of having WYSIWYG editors for comments and such. We do everything for the idiots, I guess.

    Great article.

  8. Loren says:

    Another great addition to WordPress to truly make it a CMS platform would be to have subpages inherit templates from parent pages. That way the developer creates the main templates, assigns main pages to them and then the user only has to create a page, assign it under a parent page and it automatically is templated. This would allow for easily maintained sectioned websites wholly based on parent pages. Another good feature would be for child pages to inherit privacy settings from parent pages.

    1. Joen says:

      Those are some excellent additions, I completely agree.

      In addition, inheritance could be added as simply as adding “Inherit from parent page” to the page template list.

      Plugin, maybe?

    2. Loren says:

      Actually there is a plugin that does this which I have played with a bit. It is called “Page Template Extended”. (http://wordpress.org/extend/plugins/page-template-extended/). However, I think it should be a core capability. That way developers can count on stability and continuity.

    3. Joen says:

      Thanks for the tip. I’ll look into page template extended when I need it.

      I agree it should be a core feature.

    4. Loren: [..] It is called “Page Template Extended”.(http://wordpress.org/extend/plugins/page-template-extended/).However, I think it should be a core capability.[..]

      Holy crap! That’s an excellent plugin!

    5. Joen says:

      Yes, it’s a nice plugin now that I need it. But like these two in the forum, it’s not working for me, for subpages whose parent page has the default template:


    6. Loren says:

      I am using the plugin successfully with the K2 Theme but I had to make the following changes to the code.

      I replaced every instance of:

      `$page_template_ex_path = TEMPLATEPATH . ‘/page-‘ . $post->ID . ‘.php’;`

      with the following

      `$page_template_ex_path = locate_template( array(‘/page-‘ . $post->ID . ‘.php’), true );`

      This was based on a suggestion by Eric Marden regarding the use of template in a child theme with current versions of K2.

    7. Joen says:

      Awesome, I’m gonna try that. Thanks.

  9. Karl says:

    Good list there – I’m also very excited about WordPress’ CMS capabilities.

    Have a look at qTranslate for multi-language – we’ve used it on a bunch of sites and found it heaps better than gengo or other plugins.

    Also interesting in relation to custom fields, are the plugins Pods and Flutter, where you can create new content types, rather than just extending posts/pages. We’ve used Flutter and while it’s perhaps not completely stable, these plugins show what might come. Some would argue being able to create varied content types is a hallmark of “proper” CMS system, perhaps that’s true?

  10. Nate says:

    Great round-up, but it seems a lot of your feature requests are already available as plugins. I think WordPress is in a tough spot, needing to be cautious about trying to be everything to everyone. It’s following has grown as it added more CMS-like features, but it risks turning people away if it goes too far in the direction of Drupal or Joomla with a custom field and widget overhaul.

    I certainly agree that the WYSIWYG editors have got to be improved. They should be available for the widgets, and they need to stop murdering code. The use of hr’s is a complete disaster. It’s been a known issue for quite some time, and I don’t think it’s gotten enough attention. That’s number 1 on my list.

  11. Paulo Ren says:

    It all would be just perfect!

  12. Pingback: WordPress As a CMS

Comments are closed.