Just to get it on the table, we at LaneTerralever like WordPress as a Content Management System (CMS). For solving certain types of problems it is an amazingly flexible and cost effective tool. However, through the course of our work, we have seen several cases where a decision to build on WordPress was the direct cause of awkward and difficult to maintain web systems that cost twice as much to maintain as they did to build in the first place. From our experience, the most common cause of inappropriate WordPress usage is the “Hammer Delusion,” or the tendency of people with hammers to think all of their problems look like nails. The moral underlines that just because you can do a thing doesn’t mean you should.
In this little article we'd like to outline some of the situations where we feel WordPress is the wrong tool for building a web site. For those of you preparing sharp criticisms of our lack of WordPress knowledge and skills, please take a deep breath. We aren't saying it isn't possible. We're just saying that there may be more effective tools that make some of these things easier.
WORK IN MULTIPLE ENVIRONMENTS
Will you have developers on your site working on one server while content managers are loading content into another with a testing server in the middle? Or maybe even multiple developers working on local machines and then deploying to a shared staging server? If so, you may want to reconsider WordPress. Like many CMS, building a WordPress site is partly a matter of writing code files (e.g. *.php or *.css or *.js) but it is also a matter of configuration, adding and modifying records in a database. These capabilities are perfectly reasonable and very common but we find that code/content merging on WordPress to be particularly frustrating and error prone as compared to other platforms. For scenarios like this, you may be better with an enterprise CMS such as Oracle WebCenter, or sites that have specific workflows and configurations established with global businesses in mind.
Will your site need to represent data with complex interrelationships such as neighborhoods linking to houseslinking to real estate agents with sales statistics , or linking all four things together? In this situation WordPress also may not be the right tool. WordPress includes some capabilities for establishing categories and taxonomies that allow for sorting, grouping, and filtering, but when it comes to data it’s shackled by its legacy as a blogging tool. In the guts of WordPress, everything is a blog post. If you keep a list of houses inside of WordPress, it’s actually a list of blog posts with house information stuck into the title and body areas. If you keep a list of real estate agents, they are blog posts too with the agent’s name stuck into the title of the blog post. The plugin community has established convenient ways to stretch these limits, adding custom fields and some ways to link things together. For serious data and relationships, these workarounds can be crude and frustrating. In this situation you might be better with a more open system such as a Refinery CMS with a lot of facilities for interface directly with the database.
CORE FUNCTIONALITY FROM PLUGINS
Will your site be providing unique functionality by relying on the vast library of high quality WordPress "plugins" available from third parties? That may be an awkward proposition using WordPress. Plugin code is often very good and well tested by the community. However, it is not specifically tailored for your purpose and seldom built to facilitate code customization. In most cases, plugins only match 80% of the needs for your website because the person who built it was solving their own specific problem. For this reason, plugins are used best when solving problems where you are willing to compromise a little about how things look and function. Compromise is seldom something you want to do with your core, unique finctionality. For this reason, you should think long and hard before building sites reliant on plugins for the site’s core, unique functionality. Other options if you have very unique functionality might be systems such as Umbraco, an open source .NET CMS with great code flexibility and no licensing costs.
SCALING TO MULTIPLE SERVERS
Will you want to maintain a backup server in case of failures, handle very high traffic loads, or adjust up and down for spikes in traffic load? One of the beauties of WordPress is that it runs on simple, inexpensive Linux servers and you needn't pay licensing fees whether you are running one server or a cluster of 20 servers. However, the folks who designed WordPress didn't anticipate this situation very well. There are many ways to stretch a single WordPress server including caching proxies, content delivery networks, using a separate database server, and using the caching facilities built directly onto WordPress. Sometimes it can’t be stretched far enough and you have to go the multi-server route. In these situations, the job of managing and keeping servers synchronized can descend into maddening details and custom coding. Other open source content management systems such as Drupal have had more progress scaling to multi-server environments or alternately enterprise systems like Sitecore that are specifically developed to address high load environments.
Will you need sophisticated rules around routing and approval of content? WordPress includes some basic publishing controls built in. For example, it is possible for one person to be authorized to write articles but not to publish them. This is more than adequate for 90% of our clients who frequently don’t even use that level of workflow. However, it doesn’t include routing and approval functionality that can be necessary for some clients. A simple example might be the requirement that content be reviewed and approved by both a fact-checker and by the legal team. While there are some plugins that take a stab at bolting on approval workflow, they do not offer the kind of comprehensive treatment of the problem of systems like Kentico, where visual content workflow design tools are part of the base CMS product.
Will your user base include novice content managers who use the system lightly and infrequently? From personal experience, we believe that literally anybody can be taught to use WordPress. It provides a built-in “admin” panel that gives a straightforward interface to nearly all content and administrative functions. With that said, the admin panel was clearly created by programmers and was not optimized for the discovery or self-learning of non-technical people. For novices, it exposes too much functionality and information - making it a confusing place, with too many easy ways for novices to do the wrong thing. For example, we worked with a client who decided to split up responsibility for managing dozens of different business location pages by giving a login to one manager for each page who would use WordPress every other month. That went badly. Hand coding your own custom admin area is about as much of a good idea as it sounds. So, if you will be asking that non-developers log in and use the system without ongoing training, you may want to reconsider. Another option is to work with a highly customizable admin user interface such as, provided by Sitecore’s ability to enable in-place page editing.
To get some balance I spoke to an associate, Landefeld who specializes in the WordPress platform. Cody didn’t exactly disagree with my opinion and had a moderate viewpoint, “When considering WordPress as a website development tool consider your goals and how you would build efficiently with best practices with regards to how WordPress works. This requires research from a server and architecture perspective. WordPress is an amazing tool, but you need to be sure it’s the best tool for your project."
Our preferred approach to deciding on CMS platform is to take a step back at the beginning of the project and gauge the requirements as fully as possible before making the decision. The beauty of modern content management systems is that they can be tweaked to achieve nearly any requirement with the right amount of customization. However, just because you can do a thing doesn’t mean you should.