WordPress may at its core be a blogging platform. I know that Matt Mullenweg, creator of WordPress, wants to keep all development of WordPress focused on blogging. I also know that WordPress is and will always be primarily used for blogging. However, as I work more and more with WordPress, I’ve come to see WordPress in a different light.
There are those that want to use WordPress as a full web publishing platform and not just a blogging platform. With the right kind of theme and plugins, using WordPress in this way can produce great results. Again, I see WordPress in an even more abstract view than as just a web publishing platform.
How do I see WordPress then? Frankly, I see it as an incredibly-flexible web application framework that can be used to develop seemingly unlimited types of applications.
This is a big concept, so let me explain briefly what I mean. Over the past few months, I have become involved in projects that don’t directly involve WordPress. While talking with the client or people involved in the project, I’ve come to the same conclusion time and time again: “Why don’t I use WordPress?” I first ask myself this question, and then ask the question to the client/project staff. After explaining the benefits, the feedback has been extremely positive.
These projects are all currently in active development, so I can’t give great detail about them, but I hope to be able to share enough information so that you can understand how I use WordPress and can gain an appreciation for seeing WordPress as more than just a blogging platform.
What is a Web Application Framework?
In order to establish what this Web Application Framework thing is that I’m talking about, I’ll define it. According to Wikipedia, a Web Application Framework is:
A web application framework is a software framework that is designed to support the development of dynamic websites, Web applications and Web services. The framework aims to alleviate the overhead associated with common activities used in Web development. For example, many frameworks provide libraries for database access, templating frameworks and session management, and often promote code reuse.
Wiki further goes on to list some key features that may be found in Web Application Frameworks:
- Security – Providing user logins and access levels
- Database access and mapping – Easy access methods that abstract out database access to higher level functions
- URL mapping – Allows replacing complex URLs with query strings with cleaner looking URLs that are parsed in the framework
- Web template system – Allows for different data sets to reuse templates
- Caching – Can speed up generation or loading times by caching frequently requested data
- AJAX – Frameworks to make working with AJAX easier can be packaged as part of the Web Application Framework
- Automatic configuration – Can store/retrieve data objects to/from the database
- Web services – Offers an externally-usable API for machine to machine communication
Is WordPress a Web Application Framework?
I’m sure that this can be endlessly debated, but I simply say, “yes it is.” I think that it is clear that not only can WordPress be considered a Web Application Framework, but that it performs this role very well. How can I claim this? Let’s look at that list from the definition of a Web Application Framework and see how WordPress does.
- Security
- WordPress offers user logins
- By default, these logins can belong to one of five different access levels
- WordPress also has internal logic that allows for testing whether or not a user has access to 31 different capabilities
- Database access and mapping
- URL mapping
- WordPress offers the Pretty Permalinks options that allow for easily modifying how URLs will be generated and used
- The WordPress Rewrite API allows for modification and addition of rewrite rules
- Web template system – WordPress’ template system with themes is highly capable and flexible
- Caching
- WP_Cache is WordPress’ built-in object caching system that offers execution speed improvements by caching frequently-needed objects
- Via the plugin functionality, WP Cache and WP Super Cache can offer a large variety of caching options that can increase site performance by an order of magnitude or more.
- AJAX – While not offered directly, jQuery which has some AJAX functionality is included and easily used by WordPress and plugins
- Automatic configuration – The Options storage mechanism provides a very easy to use method for quickly storing and retrieving PHP variables
- Web services – WordPress supports publishing via Atom, XML-RPC, and email as well as automatic pinging and producing and parsing RSS feeds
Almost all of the features I’ve talked about are included by default with WordPress (with the exception of WP Cache and WP Super Cache). When you consider that every one of these categories can be supplemented with either publicly available or custom written plugins, the options are truly endless.
This brings me to the most important point.
Why use WordPress as a Web Application Framework?
The entire reason to use a Web Application Framework is because it can make the project quicker to complete and can make maintenance easier long term. It is exactly these reasons that I’ve been recommending and have been using WordPress as a solution for new web application development.
Since I’m already working with WordPress all the time, I might as well keep working in what I know. In addition, using WordPress means that I don’t have to write and maintain code to handle user authentication, templating, or third-party extensions. By no means am I a designer, so giving the client the ability to use any theme that they can find, purchase, or have custom built for them while not requiring that the theme developer know anything about the project itself makes the final product much more flexible and puts much less pressure on me. This lets me forget about all the issues that need to be solved for every project and focus on what is actually new and needs to be created from scratch.
Another nice bonus is that I can use code that I’ve already written for WordPress and any time I update that code, all these other projects can instantly benefit.
How have I used WordPress as a Framework?
I’m glad that you’ve asked. I currently have three apps in active development that use WordPress as a framework.
The first time I thought of using WordPress as a framework was when I started on a project for a new web app where visitors run through quizes and provide feedback after analyzing their responses. At first, I was going to build this from a CMS that I had a lot of experience with, but then I realized that it had many limitations and could only be updated by myself. The idea of using WordPress hit me, I presented the idea, and we’ve been rolling with it ever since. Using WordPress for this has been a boon. It means that I don’t have to worry about the design of the site or providing expanded functionality that could easily be handled by readily available plugins.
A few months back, I needed to get Subversion working in the office. Two of us needed commit access to Subversion and everyone needed read access. I knew that using Subversion was not important for anyone other than the committers and teaching it to everyone else would be a waste of time long term and would wind up with weekly questions of “how do I …?” My solution was to create a plugin that I put in a new WordPress install which listed details about each repository (name, latest version, last change timestamp, last committer name, etc). It also provides access to a zip file to easily download either the latest trunk build or the most current tagged release, allows committers to create new repositories, and allows for packaging together the files from multiple repositories into a single zip file. This application has been extremely useful and took a fraction of the time it would otherwise take since I used WordPress as a framework.
The latest use of WordPress as a framework has been in creating a replacement back-end for a billing system. There are great billing systems out there, but after trying many of them out, they all fell into two camps: too complicated or too simple. So, I decided to code up the perfect interface that only provided the options that are needed in order to simplify administration. By this point in time, I naturally selected WordPress as the foundation of this new development. The development is still early, but it is already showing huge promise and I don’t see any reason why it won’t be a big success.
Conclusion
If you are looking at developing a custom web application and have experience with creating WordPress plugins and/or themes, I highly recommend thinking about using WordPress as a framework. It might not be exactly what you are looking for, but that’s the beauty; you can strip out what you don’t want and leave what you do want.
Since WordPress is in active development and surely will be for years to come, code updates will come out frequently that tighten down security, introduce new functionality, and improve the overall performance. This means that you get the added benefit of improving the foundation of your web apps without having to actually code all of it.
I’m sure that there are those of you out there that are thinking, “yeah, but WordPress has had some known security exploits in the past; I wouldn’t trust my apps security to WordPress.” To those of you that think that, I would like to point out that security exploits, and even possible security exploits, that are found are quickly patched. This is why it will be important to keep your apps current with the new WordPress code releases. That said, I doubt most developers could code tighter security than already exists in WordPress. If you can, join the WordPress team, help tighten it up, and let your projects benefit from using WordPress as a framework.
There is much more on this topic that I’d like to cover. If you’d like to see me expand into this topic with more detail, please leave a comment and let me know what you’d like to see more of.
Did I help you?
I agree completely. You can use WordPress as the base for your application and then add custom functionality via plugins which also have Admin interfaces for the client to easily update without your intervention.
WordPress is TOO COOL.
Interesting using WordPress as a base for a lot of other things.
A little over my head but cool.
Rick
I’ve often found that customizing wordpress is a far better solution than developing a CMS system from scratch.
Absolutely right. Many web development companies are doing the same things. They are customizing wordpress on request for their clients.
I agree with you.Over the last few months i have been experimenting with everything from codeigniter,cake php and symfony with a touch of zend here and there.What i have realised,speed is the keyword that you dont wanna rule out.
According to me,it will take you around 2 moths to fugure out that codeigniter will not offer you a lot of things a part from the catch phrase that excites even to the non-programmers.
For symfony it is a very good tool for experienced proggramers.
For wordpress i will hack it to the core and ride it to my liking,why bother learning volumes while i can do what you can do,only better,lol.
As a developer I can tell you he is right. WordPress can spare a lot of work and can be used as a web application framework. Here is a good tool that can help you better manage your wordpress blog, Comment client for WordPress
The customization of wordpress to me is a good thing, as it enables the business itself to target a wide audience, which – for us, is good. More online views anybody?
WordPress is extremely versatile, it can do so many things for a client. I a lot of people are starting to see this and moving towards WP.
I think the big red flag with WordPress are the plugins. If not built correctly, can slow down the website considerably. So everyone needs to be weary there. Even if you activate one and then inactivate it, it can still process queries. A sign of a poor plugin and I have seen numerous times.
As with everything open source, you need to pay attention to what you run. While there are some plugins that are poorly coded or executed, there are a huge variety of plugins that are professional-level in quality.
Most people I know that have had horrible plugin issues are ones that simply slap a plugin onto their site without reading any docs and don’t pay attention to how it affected the site.
As for ones that run queries when deactivated, I’ve never seen that. I’m also not sure how it would be possible.
We have built a golf resource center website with WordPress on the net. To my knowledge there is not a website with the same breath & depth as our site. We have over 36+ plugins and 225 pages with only 40 post / videos. So YES WordPress is much more than a blog development tool! AGREE 🙂
Obviously WordPress is. it’s a convenient web framework with low footprint. flexible enough . you can customize it to feet any web site.
i have a web site developed in WordPress . it’s absolutely stunning .
WordPress is a fantastic platform and I have been using it for years. I am currently about to start a big membership website and though about coding it from scratch but am thinking now I will stick with wordpress and see if I can get it to do what I need
Fully agree with the author. What we require is Fabrik like plugin (available on joomla ) on wordpress to start with. If any one come out with like this, it will be very interesting indeed.
[…] framework like CodeIgniter, Yii or CakePHP?Some of the few resources on this subject are this post by Chris Jean as well as a video presentation by Jeff Pearce, reproduced below: We also do have some […]
WordPress is a blogging platform not an application development platform…The code is poorly documented…Wordpress also requires that you install it before writing the plugins or adjusting the actual source code itself…If you make one mistake with worpress you have to reinstall it which is a nightmare…For commercial development of blogs it is great but not for applications…It is better to use codeignighter or zend for application development in php 5…Most of the wordpress plugins are very difficult to adjust as both the wordpress code and the plugin code has very very very poor code quotation (Documentation)…Me personaly…I believe each software application has it’s own natural structure and developers should not be forced into development paterns, rather find the natural fit for each application..I like zend because it allows you to develop freely even though it is structured using pure php…not poorly documented invisible objects like Cake or other…Wordpress is nothing more then useful as a cheap solution…Development of advanced application for worpdress is very costly often causing people to return to classical development
Your argument is that it is not an application development platform because you don’t like it? Good argument.
If you don’t like it, that’s fine. Use what works for you.
My only point is that it works well for me, and if other people want to use it for such solutions, then they shouldn’t feel limited by people like you who want to assert that it is nothing more than a blogging platform.
Chris, I’m in doubts.. (and that’s why I’m here, reading your post) I think using something in the wrong way is generally wrong, it’s like using teaspoon to eat soup.. it works but it as the teaspoon is not suited to that, it’s just awkward. On the other hand, I beleave it may be doable – I just don’t know, how nice and tidy the hack you are talking about would be. How easy can I get rid of the blogging features that I dont need at all, and how easy can I inject my stuff – and benefit from user management and security, which are my most important reasons why to hesitate. And I cannot imagine how hard would be to maintain the app, as the updates will from time to time overwrite my code and so on.. as i say, i’m not sure this is the right way. Probably there are many other php frameworks for building up webapps, that wordpress.. In your case, I fully agree – if you and your team know WP, and you could benefit from some of provided plugins, the development will be easier, but I see THIS 2 reasons as the main adventage. In my case, .. I donno much about plugin development for wp.. so any other, light webapp framework would be maybe better – what do you think?
I think that you greatly misunderstand what WordPress is and how I use it.
First, I never modify the core WordPress files. There is no need to. There are very few things that I cannot modify through filters, modification of specific variables, or use of built-in APIs.
Want to remove menu entries on the admin screen? No problem.
Want to add new post types and taxonomies? No problem.
Want to create new rewrite rules to build a URL structure that can assemble database queries? No problem.
Want to do anything you want when the site is being rendered? No problem. Themes have full control over this.
Could I use a traditional PHP framework to build a custom site? Absolutely, but I will need to build my own security system and do my own security audits. Build my own user system. Build my own APIs. Do my own UI and UX design work. And anyone that wanted to add additional features would need to learn how I built the site. If I use WordPress and do my work properly, WordPress provides the user management system, WordPress provides security updates, plugins can quickly and easily extend the functionality of the site without requiring me to write every single possible feature from scratch. The benefits aren’t only good for me (faster production, fewer management worries, easier future expansion), they are good for the end user as well (able to trust the system more, access to existing help documents, not having to rely on the original developer for everything).
I think a lot of devs are scared of that last end user benefit. They want to force customers to be tied to them for all time, requiring them to decide between paying more money to get anything done or ditch the developer and start a completely new project from scratch with someone else. This is an old way of thinking, and it is not a good way to keep a business running long-term. Customers will quickly wonder why they should pay you $X,000 for a site that is completely custom, requires you to make any modifications, and requires them to have full faith and confidence in the developers abilities based on just their word when they can spend a similar amount of money (or often times less) to get a custom site built atop an established CMS with a huge variety of options on how they can move forward if their chosen developer doesn’t work out.
The key is to charge the proper amount for building the site on the first contract. Don’t lowball the bid in order to get them as a client and then nickel and dime them later since they are stuck with you. This is a great recipe for having a large portfolio of clients that would not recommend you.
I just wanted to say that this blog post is a breath of fresh air and Chris, you’re definitely on the right path. As a web developer AND an entrepreneur who has 2 startups now funded, I can honestly say that WordPress is an awesome choice to get a web app up. At first I thought it would only be useful for me to use as a proof-of-concept but its the full deal, in fact even better than my past experiences with CodeIgniter, CakePHP, and Zend. Its an even better setup than all those other frameworks with add-ons like Gravity Forms and Buddypress, site managers like Manage WP, advance plugins at WPMU Dev, and hosting companies that allow for versioning and test environments like WPEngine.
Of course, if you’re a hardcore developer and understand nothing about business, then you’ll keep pushing other frameworks like CI and Zend. But if you understand the importance of shipping quickly and iterating often, then you truly start to see that WordPress excels in this area.
I don’t know how many times I’ve heard developers gasp that I’ve built web apps on WordPress, and everytime I can guarantee they think I don’t know what I’m talking about because they’ve never truly immersed themselves enough in it to understand what it is capable of.
Ignore the haters!
Basically i think WordPress is only made for Webmasters and more we have lots of plugin available unlike Joomla.
WordPress is a User friendly CMS.
I totally agree with Chris. Building over WordPress allows you to focus on the core functionality of your web app, with lots of ‘overheads’ or ‘non-core’ activities (security, user management…) being handled. We make all our websites in WordPress. What you have to be careful are plugins. Review them, test them, check their code for security issues before using them in production.
Thank you very much, this is information I need when I begin to use WordPress, thanks again.
[…] code reuse. WordPress intègre toutes les caractéristiques citées jusque là. Je recommande cet article qui illustre en détails en quoi WordPress est un […]
I’m a developer in higher education at a large university. When I started here I was very new to WordPress and completely thought of it as a blog maker. A close friend of mine had been trying to get me to take a closer look but I refused as I couldn’t see how it would be useful. After using WordPress for only 6 months as an advanced user, I agree completely. WordPress is DEFINITELY a Web Application Framework. An excellent one at that. You just have to respect it.
Of course some of the plugins are problematic. They’re problematic in the same way that simply downloading 3rd party apps to do functions on a Windows machine is problematic. You will likely end up with a virus unless you do some research and go with proven solutions. The same is true for WordPress plugins. As many others have said, if you don’t do your due diligence, you may end up having problems.
As with anything it has it’s issues. IMHO, it’s the fastest way to deploy a full product including administration, user auth/privileges, etc.
Great Article!
-T
[…] WordPress as a Web Application Framework :: Chris Jean […]