Faking it: WordPress as CMS pt. 1

Tagged and

Part two is now up, you can find it over here.  This series is by no means exhaustive, but it is a good place to begin to understand customizing WordPress.  NOTE: This tutorial only covers WordPress 1.2, if you are running WordPress 2.0 this is all useless.

In this tutorial we will cover the steps necessary to use WordPress as a CMS.  This tutorial will cover the basic concepts and steps to get something up and running as quickly as possible, part 2 will cover more advanced tricks to get the most out of your WPCMS.

The first step is to identify exactly what you want to get out of a CMS, just because you can make WordPress function as a CMS doesn't mean you should.  Be sure before you begin that you are not creating more work for yourself than neccessary.

Okay so I assume since you are still with me that you have decided that a WPCMS is for you.  Now, we need to identify how your new shiny sight will be organized.  For the purposes of this tutorial lets assume that you will have the following site structure:

  1. index/home page
  2. colophon/information page
  3. about me/about us page
  4. movie/music reviews

We all set?  Good lets get going.

The core of our approach will be to utilize the category system built into WordPress to "fake" static areas of your site.  First off, create the new categories that correspond to our "sections".  Go ahead and do that, I'll wait.

Done?  Good, now we need to go to our index.php page and make some changes to how we grab and display our categories to the world.  But first things first; we need to find out the id number of each of our new categories, so off to ~/wp-admin/categories.php!  Once there, locate the categories we have added and take note of the id, for our purposes we will assume they are 8,9 and 10.

Now having our id's we open index.php in your favorite editor and add the following to the top of the file just below
$cat="1 2 3 4 5 6 7";
Edit: Now you might be asking your self as one of my readers asked me already, why not just use $cat = "-8 -9 -10"; instead of listing the allowed cats?  Well as I responded to him, currently in WP you can only have one negative value in the $cat=""; statement.  This might be something that will be changing in the future, but until then the only way you can make the magic work is to follow my instructions.

So the top of your index.php page should now look like this:

What we have just done is tell the index page to load any content it finds in categories 1 -7, but to absolutely, positively ignore 8 - 10.  Now this is a good solution when you have multiple categories that you want to exclude, but if you only have one, say you only want to have an aboutme.php page, then you would simply place this: $cat = "-9"; which would tell your index.php page to pass over any posts that belong to the aboutme category.  Pretty simple huh?

Now on to your single category pages, e.g. colophon.php, aboutme.php and reviews.php.  These are even easier than setting up your index page.  Remember those id numbers you grabbed to exclude from index.php?  Now you need to add the appropriate category number to each page.  For this example lets assume that the cat id's correspond to the category names in the following order:

  1. 8 = colophon
  2. 9 = aboutme
  3. 10 = reviews

Now that we know what category corresponds to what id it is simple to create the pages.  My advice would be to simply open up index.php again and change the first couple of lines to the following:

Now save this page as colophon.php and you are officially done with setting up your colophon.  Now you can easily log into your wp-admin area and create as many entries as you would like for the colophon, and they will magically appear on colophon.php but never show up on index.php.  Do this for each of your other pages changing the $cat="(n)"; to match whichever category you are wanting to echo out on that page.

You really have nothing left to do for your individual pages, so we can move onto cleaning up a couple of loose ends on index.php.  You have very sagely removed any post content that corresponds to your new categories from index.php, but neglected to do something about your categories list on index.php!  Now this only applies to those people who have not seen the light as I and a few others have, and still have categories listed on your index page.  But I digress, back on topic.

So we now need to ensure that our category listing on index.php only shows the categories that we had specified with $cat="blah balah"; and yes I meant to write blah balah, it is fun to say you should try it sometime.  So lets open index.php again if you closed it and locate this snippet of WordPress code:

You should find it around line 71 or so, and change it to this:

Now of course you would want to change the id values to whatever your cat id's are, but you already knew that didn't you?

Well that is it for now, you should now have a working CMS system powered by WordPress.  In part 2 I will cover semi-caching of your pages to increase speed on those pages that are not always changing, and how to perform some nifty magic with your apache server.  See you then.