WordPress is Not an App Platform

WordPress has come a long way since it’s inception. I really got excited about WordPress after the platform started allowing developers to register their own Custom Post Types. I was a big fan of this, and believed this could bring the type of data abstraction that was needed for modern websites.

I exclusively use WordPress when I am developing a website that doesn’t have user generated content. While I’ve seen many great competitors to WordPress, like Ghost or Craft, the simplicity and expandability of WordPress has kept me using the platform. These other alternatives do not offer enough of a reason to change. This is the classic example, that you need to be 10x better for me to change my behaviour.

When I am working on web applications, I almost exclusively use Laravel or Rails. I never give WordPress a passing thought. Laravel was born from the aging CodeIgniter framework, and Rails started the revolution with easy MVC and convention over configuration. When you compare WordPress against any of this, CodeIgniter and Rails 1.0 look super modern and sleek.

So why are we having this discussing? Why is the WordPress community pushing for this? The reason is because we have seen so many services, come out of the WordPress eco system. Using WordPress you can, start your own Kickstarter, create your own directory service, have a full e-commerce platform, mange a powerful social network, and so much more. If all this was possible with WordPress, does it make sense to use it as the backend for your next app?

You have to ask yourself what you are trying to accomplish. If you set out to build an app that hundreds of thousands of users will use, then WordPress may quickly break down. WordPress will be able to handle the traffic, it’s the data and the flexibility you will struggle with. Let me illustrate a perfect example I have dealt with recently.

YAB Directory

Over the past year, I have been working on a business directory. I know it seems so 1995, but I had a small twist that I wanted to deploy to the public, and I wanted to experience the challenges in building that service. I of course built it using Laravel, but I could have built it just as easily using WordPress. So why didn’t I?

For starters, I wanted to always have a lot of control over the data, and how I could use it quickly for widgets or helpers. With Laravel, I got access to a powerful ORM, which is pretty damn fast. I would run queries like:


$latest = YAB\Listing::where('user_rating', '>', 4)
    ->where('city', 'Toronto')->first();

This gives me a lot of power. If I want to know, what the top rated listings were, that exist in the city of Toronto, and were created first, it’s a single line of code.

Managing the directory listings would also be a problem. As anyone who has run a WordPress sites with hundred or thousands or articles knows, finding and managing those posts on the backend, can be quite difficult. Using Laravel I can build an entire web admin portal to customize my queries, and run special reports. All would be possible in WordPress, but with exceptionally more work, and would all be stuck in WordPress Admin Dashboard area.

The JSON Rest API

People have been getting more and more excited about the REST API that WordPress is continually developing. I am a fan of the API, but I think we have to understand the proper use for this tool. Having this API will allow us to create better blog feeds, faster loading sites, and an overall greater experience for the end users.

WordPress is a Great Tool

There is no doubt in my mind that WordPress is a great tool. I have built a few web apps using it, and several e-commerce sites. I have looked passed it’s major faults (PHP 5.2 support, I’m looking at you).

WordPress has been a great tool for building websites, and it continues to be a great tool for business sites. I understand WordPress’s need to remain relevant, but it will remain relevant for many years, without having to become something else.

Leave a Reply

Your email address will not be published. Required fields are marked *