WordPress Bits

Hacking WordPress. Keeping the bits together.

WordPress webapp framework. More than a blogging engine. More than a CMS.

Posted by Leonid Mamchenkov on June 18, 2007

I’ll try to keep this post as non-technical as possible for the benefit of the general public. The main goal of the article is to show why and how WordPress is more than just a blogging engine or a content management system (CMS). WordPress is a web application framework.

First, let’s see Wikipedia definition of “Software framework”:

A software framework is a reusable design for a software system (or subsystem). This is expressed as a set of abstract classes and the way their instances collaborate for a specific type of software (Johnson and Foote 1988; Deutsch 1989). Software frameworks can be object-oriented designs. Although designs don’t have to be implemented in an object-oriented language, they usually are. A software framework may include support programs, code libraries, a scripting language, or other software to help develop and glue together the different components of a software project. Various parts of the framework may be exposed through an application programming interface (API).

Reusable design, blah blah blah, code libraries, scripting language, blah blah blah, glue together, blah blah blah, API. Not bad. I’d say it nails it.

The truth of the matter is that WordPress has a lot to offer to web application developers (web developers and webdevs for short). Let’s see exactly what.

  • Database abstraction layer. WordPress provides functionality for database connectivity, querying, variable escaping, caching, and troubleshooting. Altogether this means faster development for database dependent web applications.
  • User management. WordPress has a whole lot of functionality around users. Most web applications these days use some sort of user management. Many require access control management. WordPress offers this out of the box.
  • Content and object management. WordPress provides functionality for object management (posts, pages, attachments, drafts, categories, etc). These objects have some minimal attributes (title, author, publication date, etc), but can be easily extended with custom fields (price, size, relationship, status, and anything a webapp might need).
  • XML-based interfaces. WordPress knows a lot about XML. It can import and export data in a number of XML-based formats (such as RSS and Atom, for example). And it also provides a powerful way to interact with data (both read and write) – an XML-RPC interface.
  • API. WordPress is one of those system that really behave like a skeleton. It allows for all sorts of customizations, both visual and functional (plugins, themes, widgets). It lets web developers control many internal processes and outputs (hooks). It makes packaging and redistribution of features and appearences trivial with packages and themes.

On top of that, WordPress features some excellent documentation, large and active user community, search engine friendlyness, and more.

And why is that so cool? Because. Because almost all modern web applications can benefit from these. How many web applications do you know that don’t use some sort of database? How about web applications that don’t manage users? Are there any web applications at all that don’t need content management? Are there any good web applications that weren’t integrated with other web applications or extended by user community in some way?

And don’t forget that WordPress is a free and open source software. That means that anybody, anybody at all can improve it. Nobody, nobody ever is going to lock it down and have full control over the future direction. And nobody will ever force you to pay huge amounts of money for support, upgrades, or maintenance. That’s pretty important considering the cornerstone roles frameworks play in application development.

Can we have a practical example without going into too much of technical details? Yes, of course.

Consider WordPress posts. They have already been assigned different types – post, page, draft, attachment, etc. But these don’t vary a lot to demonstrate the power. What’s truly amazing is that WordPress posts can easily (with custom fields) represent any other data. WordPress post can represent a real estate object, for example. Or a car. Or a person. Or a product. Or a service.

WordPress’ own categories can be reimplemented as posts. And, in fact, that was somewhat done with pages. Remember, a page can be a parent of another page? Just use post title as category name and post content as category description, and here you go – your own category subsystem within WordPress, without any work at all.

Why do we need WordPress categories then? Well, they come handy sometimes too. Let’s say you have you’ve built a product catalog using WordPressj (each product is a WordPress post). And let’s say your products can have a number of features or properties. And let’s say these features can be easily expressed as true/false or yes/no value. For example: featured product – yes, can be shipped globally – no, available in gift wrapping – yes, needs age confirmation – no, and so on. Well, these all features can be implemented as categories. Then you just assign appropriate categories to your post (product), and you don’t need to do any programming at all. More so, you have a whole lot of functionality given to you by WordPress itself (editing, searching, aggregating, counting, etc).

WordPress provides some really useful functionality for application development. But it’s been hyped as a blogging engine and a CMS for far too long now. Getting rid of stereotypes and expanding horizons will take some time. But I have a tip for you that might be handy along the way.

For the next day or two, every time you stumble upon a web site – be that three static pages or the newest Web 2.0 service, ask yourself a question – “Can this be implemented with WordPress?”. I promise, you’ll be amazed by the number of times you’ll say “yes” (note: if you come up with “I don’t know”, use some help resources to figure out a “yes or no” answer). And after those couple of days come back and we’ll work on the “How do I do this with WordPress?” question.

29 Responses to “WordPress webapp framework. More than a blogging engine. More than a CMS.”

  1. WOW!, Just WOW.
    I think everyone will agree with your point. I am keep saying for long time now that WordPress can be used for almost anything. If there is no built-in functionality which do what you want then just find someone or code a plugin yourself for that function. WordPress is MUCH MORE than simple blogging platform!

  2. Thanks Sergios. I’ll try to post more WordPress non-blogging stuff here. I think it should help in promoting WordPress as a flexible framework.

  3. Excellent post.

    There’s a great plugin that makes a lot of this easier — it adds a custom GUI to custom fields in the editor page:

    http://rhymedcode.net/projects/custom-field-gui

  4. Thanks Stephen.

    Yes, Custom Field GUI plugin is one of those things I’m proud to have in my toolbox. However I found it to be a somewhat limiting for advanced and complexed forms. The good news though is that Custom Write Panel plugin (by the same author) is in the works. It looks like it should solve the shortcomings of Custom Field GUI plugin.

  5. Michel said

    Interesting read.

    Will you please post more details these days on how we can use some of these advanced features in practice – like WP as a CMS, WP as a catalogue, etc.? :-)

    Thx :)

  6. […] WordPress webapp framework. More than a blogging engine. More than a CMS. « WordPress Bits Why it makes sense to build websites and even web apps in WordPress. Looks like this will be the first of a series of a posts, although the next hasn’t yet appeared. (tags: blogging) […]

  7. […] WordPress webapp framework. More than a blogging engine. More than a CMS. « WordPress Bits (tags: wpbits.wordpress.com 2007 blogging cms framework wordpress) […]

  8. flickaflick said

    The author of Custom Field GUI has now developed a new plugin called ‘Custom Write Panel’ which is even more useful :)

  9. […] Makes Sense For Many Non-Blog Websites from Ifacethoughts, and now Leonid Mamchenkov has written “WordPress webapp framework. More than a blogging engine. More than a CMS”, another good look at how WordPress is giving CMS programs some fierce […]

  10. […] Top Posts Disable default WordPress widgetsWriting WordPress plugin. Widget Loader.Simple widgets. Widgets 101.Advanced widgets. Widgets with controls.WordPress webapp framework. More than a blogging engine. More than a CMS. […]

  11. clearskys said

    Absolutely, I’ve used WordPress for a number of non-blog sites now.

    The main advantage I find (especially when the deadlines are tight) is that most of the tedious work has already been completed for me before I start.

    So the content adding, editing, managing forms are already there (and work), as is the user functionality, categories management, etc… And for anything slightly different I would need, I can just write a quick plugin to handle it (if one hasn’t already been made available).

    Using WordPress as a framework, you start a bit further forward in the development of the project than if you were to use a more “traditional” framework. That’s not to say it’s perfect for everysite however. For those tricky site you just have to knuckle down and use Codeigniter.

  12. Hmm… it’s two people mentioning Codeigniter in a single day. I think I have to check it out. :)

  13. Anthony said

    I had two sites, one was a static html site which I created in Dreamweaver, the other using a free article script. The static site was a pain if I needed to add a new file, and the article script was a nightmare to customize. I decided to switch both to WordPress and I am glad I did because it is so easy to add new articles and to change the look of the sites.

    This article makes me realise that there is more under the hood which could be used.

  14. Anthony,

    indeed so. WordPress has quite a few handy things, both in administration and in the code, which can improve the quality of your own code, as well as speed up the development process.

    Stay tuned :)

  15. I wrote about this very thing awhile back. In fact, we’ve been testing several platforms — among them, WordPress — to find the “ideal” platform to use for a non-profit. WordPress, for the most part, stood its ground with a lot of help from plugins (some things that should already be in the core). You can check out what I posted at http://blog.scoop0901.net/technology/using-blog-software-to-maintain-non-blog-sites/

  16. Dave,

    Nice post. Thanks for sharing.

  17. […] A good series of articles about how to create a WordPress-based Web site with more to come. WordPress webapp framework. More than a blogging engine. More than a CMS. […]

  18. aaron said

    Cool. I was interested in doing other stuff with wordpress instead of doing it manaully(like creating pages). I wasn’t sure before, but now I think I can.

    This site rocks, by the way.

  19. Thanks Aaron! :)

  20. Not a problem, Leonid. We’ve spent a lot of time looking at the “big guns” of CMS — and because I liked WordPress, I tossed it into the mix. Just because I liked it, once it was committed to the tested, didn’t matter. It had to stand or fail on its own. It actually surprised me — when, at the end — it was still in the running. Early on, I thought it could do “most” of what was needed, but heck, even CNN, the US Postal Service, and many other sites are using WordPress as the backbone of their sites. That’s as much a statement as it is testimony to its usefulness and durability. If it couldn’t hold up to the rigors, it wouldn’t be used on any of those sites. Even Ford uses it on one of its highly-viewed sites.

  21. rod said

    wordpress is by far my favorite cms. actually right now i’m in the process of making a real estate site with wp and i’m using the same approach you talked about, using categories for different “classes” and a couple plugins to make it all display how i want it to.

    and i must say i considered most of the other alternatives, but so far i haven’t found nothing that is as simple and flexible. either too bloated or too specific.

    been using wp for years now and it seems i won’t be stoping anytime soon.

    btw, great site. i’m so bokmarking this.

  22. Rod,

    what a coincidence! :)

    I’m working on a WordPress plugin for real estate management right now. Too bad it won’t be open sourced for some time… :( But I’ll try to share as much information as possible about the process of making it. I’d be interested to hear about your way too.

  23. […] application.  It is indeed. But it is so much more.  I’ve argued before that it is a web application framework.  It can be used to build things like classified directories, job sites, address books, booking […]

  24. Hello, I can’t understand how to add your blog ( wpbits.wordpress.com ) in my rss reader

  25. PsTuto said

    WordPress is very flexible, but it is very slow (more than 1 second to load the wordpress core).

  26. mymizan said

    I agree with you. WordPress is more than a blogging platform. It would be easy to use wordpress than building a site using web framework. I use it, because i already know it! I must say a good side is vast documentation available and wide userbase who are ready to help you!

  27. […] https://wpbits.wordpress.com/2007/06/18/wordpress-webapp-framework-more-than-a-blogging-engine-more-t…(en ingles ) Esta entrada fue publicada en Informatica. Guarda el enlace permanente. ← Hello world! […]

  28. custom software development company said

    Nivista is Custom Software Development Company offers services in .NET Application

    Development, Dynamic CRM, Sharepoint Application Developement, Business Intelligence

    Reporting, OffShore Software Development etc. We are expertise in providing IT and ITES

    solutions. Custom Software Development Company

  29. I definitely agree with you. most of the people think its for blogging only. but i use wp for almost all of my projects . and its easy to customize and manage. thanks for sharing this info. much appreciated.

Leave a comment