WordPress – The Goods and The Bads!

A lot has been written about the niceties of WordPress and its capabilities; its tweaks and extending its limits. Particularly Lorelle On WordPress site and the post websites pushing wordpress beyond its limits points to very good stuff.

Nevertheless, as a software engineer I will analyse it from a different perspective – for more industry use than individual use. Blogging is not personal any more, the industry has accepted it as an effective form of broadcasting, marketing and community development, hence this effort.

WordPress is a kind of tool that gives you instant conviction, both as a user and developer. To be able to setup your website quickly and also see a UI for managing it makes you feel powerful. This concept is applied in lots of tools to create Content Management Systems. The idea is to control entire lifecycle of the content using a single platform. Where most of these tools differ today is the flexibility and performance that they provide. Some of them are built for specific purposes or with certain ideologies. I will consider WordPress as a CMS tool specific to blogging.

WordPress supports the CMS concepts and the latest standards in it. It lets you design your website using pure XHTML and CSS. The correct use of this can enable you to have tableless designs and save a lot of bandwidth. In addition to this, it also allows separation between the layout and colours/styles of the design. At the core, it has an innovative design of a loop that provides context to all the operations within it. This eases the task for a developer. Lets look at some features:

Multiple heirarchical categories
This feature gives complete freedom to the information architect to do content classification as required, without thinking of technical possibilities.

Custom fields in the posts
This empowers the user to add more elements to the structure of the post. This is a pretty neat feature as it can be used to wrap the post as some other data type, without having to create any separate storage for it.

Plugin API, Hooks, Filters and Overridable Functions
Wordpress provides a plugin API to add functionalities to your blog. The hooks enable modification of the behaviour or optimisation at certain events, e.g, the wp_head hook gives a chance to do optimum Search Engine Optimisation. Filters are used to transform data between the point of retrieval and delivery. These features let the developer modify behaviour of the blog without hacking into the WordPress code.

This idea is very impressive, but not satisfactory. The plugin API does not enforce any rules on the developer through the design. I see the reason behind this as non-Object Oriented implementation in lots of places. The purpose of a common system for all the plugins can be two-fold, one is it will ease plugin development and two it will make the upgrades much easier. Now with PHP5, WordPress should definitely try to achieve more here.

WordPress does not provide lot of control to the developer over the retrieval of data. The user can use filters only after the data is available. A disadvantage of this approach is that some unnecessary data might also be requested which will not only increase the time of retrieval but also affect the memory and increase processing. For example, if a category or post has to be hidden, the developer has to use filters to hide. This can be avoided only if the developer writes his own SQL query and starts a loop. But this will mean that the developer will have to be exposed to the database design, which might change in future. The plugin API should hide the plugin developers from these internals and provide an uniform interface. I attribute this to embedded SQL queries. Which can be modified only to a certain extent at runtime. WordPress should provide such control to the developer so that his/her actions can dictate formation of the entire SQL query.

An idea case would be that WordPress starts using stored procedures, MySQL 5.0 supports them. Stored procedures are compiled in the database and are effective in increasing performance.

Separation Of Concerns
Wordpress, through its support of XHTML templates and CSS, allows separation of data and display, i.e., the formatting of the data can be completely different from the storage, retrieval and processing itself.

The templates themselves are PHP files which can help quick development, but it also poses a danger of co-existence of code for retrieval, processing and layout of data. There is no physical separation between them. WordPress can use something like Smarty to differentiate in the design itself. This is a subjective thing, it makes the development more complex for smaller projects, but it will definitely help in bigger projects (like WordPressMU) and where bigger teams involved.

Wordpress has search that is partly effective. It does not search through everything, there are some plugins to this effect, but they will never be as effective as WordPress supporting it by design. The search does not show relevance or highlights of searched keywords. It needs a strong search enging that can index the data and provide better search performance. One of the outstanding open source search engines available today is Apache Lucene.

Data types
Since WordPress is a blogging tool, it supports the data type of a post (or entry). It also has other data types like categories, links, users, etc. Like mentioned earlier, the post can be disguised as another data type by using its custom fields. This is the only element that supports creation of new data types. There is no common framework to create or handle the datatypes. This means that when I add my own data type, everything has to be done from scratch. This can not only be cumbersome but also dangerously erroneous. Having a framework for this will also help WordPress in controling lifecycles of the different data.

The option of custom fields can be used to only add to the post, but it will not help to create a data type for images or newsletters. This can also help to build bridges between WordPress and other applications.

Currently a very simple workflow is provided for controlling publishing of a post. But there is no way of building other workflow events or rules into it. There should be a workflow engine to support this so that it can be used in diversified environments.

The support for syndication is nice and full-fledged. With more and more plugins adding functionalities, syndication is getting richer and richer.

There is support for multiple users in in WordPressMU, but it is still not part of the main package. Support for multiple blogs requires good central administration, and more granular permissioning for assigning administrator per blog.

WordPress is still one of the best tools available for blogging, the best for me. I firmly believe that its core design and development is a reason for this, and it has to be continuously enhanced to meet newer challenges in blogging.

Technorati tags: , , , , , , , , , , search, , , , , , , , , ,

Copyright Abhijit Nadgouda.

9 Responses to “WordPress – The Goods and The Bads!”

  1. Abhijit Nadgouda @ iface » Wordpress - Multiple Heirarchical Categories To Rescue Says:

    […] Ideally we would have preferred to create datatypes of each of the aspects – editorial type, publication and topic. However, as I have written WordPress allows, but does not inherently support creation of different datatypes, we would have to create everything related to that datatype. For this iteration, this approach not only saved us lot of time in implementing the content classification but also made it convenient for the user and the administrator. Feel free to comment on this and give suggestions. […]

  2. Abhijit Nadgouda @ iface » Wordpress - Common Theme For Frontend and Admin Says:

    […] This is something I had been meaning to write about for a long time. Probably this can be considered to be part of my consideration of WordPress as a CMS. But even from usability point of view this can make sense. […]

  3. Knowledge Management Says:

    A Big Hello to All ; ) My name’s Betty Floyd Masterson. I’ll say to you now I’m kinda new to Blog stuff! I just have to say this is one of the better blogs I have visited. I’ve subscribed to your rss feed!

  4. Lazy Drive Says:

    Kid in a candy store.

    WordPress is offering Unlimited blogs! WOOHOO! So I can finally do what I did with my blogger account – get more blogs than I could handle – and the result was me getting a blogger's block, after tryin to do justice to all the blogs I started.

  5. Abhijit Nadgouda @ iface » Blog Archive » Of Wordpress Search Says:

    […] One of my biggest issues with WordPress is about its search. […]

  6. diesel fuel Says:


    I like the info you provide about bank ; cross.Good job !

  7. Samiro Says:

    Very interesting article. But, while WordPress is a powerful online publishing tools, even with its current limits (everything has its limits) it is very suitable for SMW’s (Small/Miduim Websites). As for large websites (in terms of data / traffic) I consider Drupal to be WP’s big brother. Even Drupal has its limitations when it gets to mega clustered projects that may need customtailered solutions. Would be even further more interesting to see this analysis in comparison with other alternatives to WP.

    kind regards,

  8. Abhijit Nadgouda Says:


    I have moved your comment to my new blog where this post is available. I will appreciate it if we continue the discussions there. Thanks!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: