When I started my very own personal blog, I decided to hand-code it and I’d eventually figure out the logistics of a database… later. I was happy that it existed at all, especially with such an appealing visual design.
However, I eventually succumbed and tried out a pre-existing framework, realizing that I didn’t want to reinvent the wheel. Plenty of people had made blog frameworks, and it was time that I used the fruit of their labor. I’ll guide you through the steps I took to make what I’ve got at the moment.
Several Google searches later, and after considering Simple PHP Blog and Moveable Type, this article helped guide me to the Content Management System (CMS) I was to use; WordPress. I’d seen the default template at a lot of blogs, and hadn’t realized that it had much potential until I really played around with it.
I initially installed WordPress in a subdirectory, which let me access both my old site and my new one simultaneously, and limited downtime. The installation itself was very easy (instructions here). I was easily able to add each post in the old site to my new site and easily specify a publish date in the past. If you wanted to publish entries from 1 AD, I don’t doubt that you’re capable of it in this framework.
The tricky part was moving my static content (ex: ‘About’, ‘Projects’ etc) into my new CMS. WordPress has ‘Pages’ that model this idea, but all of the themes I’ve show subpages, which is (IMO) visually unappealing. I got to play a little with php and fixed it so you only see the top-level content (here’s how to do that). Ideally, as per this request, you’d be able to see subpages under certain conditions. I don’t know (and haven’t looked hard for) any code that would do that at the moment, though.
WordPress follows good design and separates content from layout with their themes and related php functions. I wanted to emulate the look of my old site as closely as possible without writing a WordPress theme from scratch. After looking through several theme galleries, I eventually found a WordPress Theme Generator which let me specify design and colors to approach what I was looking for. I then went into the CSS to fix various graphical glitches such as vertical line spacing (this page helped). I wasn’t sure that I wanted a three-column setup, but I had difficulty removing the third column, so I eventually grew to like it.
On a related note, I also installed the WordPress Mobile Edition plugin, as I own a Windows Mobile 5 device with a relatively underpowered browser. The mobile edition uses a completely separate theme from the main site, interestingly. While I’ve not taken great care to edit the mobile theme, it’s there. You can easily place Google Adsense for Mobile Content ads on it.
One of the reasons I wanted a CMS is for the ability to comment on entries. Askimet is installed by default, and filters spam comments into a separate spam queue where they can be glanced at and saved (or, most likely, purged). You need to sign up for an Akimet API Key first, though. According to Askimet’s spam counter on their main web page, 88% of all comments are spam.
I’ve recently come across a comment system called Intense Debate, which I discovered through my friend Colin Ake. I’m putting off adding Intense Debate until it’s compatible with Askimet, partially because I receive far more spam than I do human comments.
WordPress lets you add plugins that you can then add to the sidebar(s) of your blog. This is a decent guide on how to install them. Most of the widgets I use are built into WordPress; these include the Meta, Pages, Archives, Links, Recent posts, Tag cloud, and Recent comments widgets.
Aside from the built-in functionality, I was most interested in widgets that would link with my twitter (plugin), flickr (plugin), and del.icio.us (plugin) accounts, but decided against the first two as they didn’t fit into my graphical/performance ideas for this site. They might be useful to you, though.
Share and subscribe
I find the Add to Any plugins to be useful. They provide links to add your rss feed to the user’s reader/service of choice (plugin), or to bookmark the current page using the reader’s web bookmark service of choice (plugin). In addition, they’re relative unobtrusive for the amount of services they cover. If you don’t use WordPress, they’re available for other platforms as well; see addtoany.com.
I don’t just rely on those plugins/widgets, however. I made sure to include a link to my feed near the top of the page, with a stereotypical RSS icon. In my opinion, the feed link is one of the most important on the page.
In addition to Askimet, there are some plugins I think you should consider with your new (or existing) blog:
The Redirection plugin is by far the most useful plugin or widget I’ve encountered. It lets you set arbitrary url redirection rules, optionally using a regex. This is a great way to redirect your old content locations to your new ones, keeping search engine rankings and visitors’ bookmarks intact. It logs all 404 errors so you can easily see where new redirection rules are needed, and also shows how often your existing rules are used. Redirection Official Site.
WP Super Cache
Just in case you get hit by Digg, Slashdot, etc, or even if you want to simply optimize your server performance, this is a good bet. WP Super Cache Official Site.
Because they’re not important to the display of the page, it’s better to load stat counter-type code at the end of the page. Not all themes include the relevant code to do so, though.
This particular stats plugin shows you recent stats right in your dashboard, with the ability to drill down a little bit. You’ll need to enable third-party cookies in your browser to do that, though. To use this one, you’ll need a WordPress.com API Key, which you can get by signing up for an account at WordPress.com. Plugin: WordPress Stats.
If you use Google Analytics, there’s a plugin that integrates support for it. What can I really say? It just works. Google Analytics itself is an impressive suite, so give it a try. Plugin: Google Analyticator.
Official StatCounter Plugin
I’ve always liked StatCounter, even though their free services have a limited log size. But hey, they’re free. Everybody’s got to earn a living. Statcounter Bog: Official WordPress Plugin.
Search Engine Optimization
While I’ve only dabbled in this, the following plugins may be of use to you:
Optimizes post titles by removing common words. For example, it removed the ‘to’ from the title of this particular post when generating the slug (from noobs-guide-to-wordpress to noobs-guide-wordpress). Shorter URLs are a good thing regardless of SEO. Plugin: SEO Slugs.
Google XML Sitemaps
Generates a sitemap of your WordPress blog that is supported by most major search engines, and updates it automatically. Google XML Sitemaps.
Meta-data manager. HeadSpace2.
Manages which pages get indexed by search engines. This focuses robots on your more important (content) pages. Plugin: Robots Meta.
I’m very happy with my current setup. I’ve been putting off the upgrade to WP2.6 due to plugin compatibility concerns, but the nagging banners to upgrade in the WordPress administration dashboard will soon bother me enough to actually take care of it.
Also, I eagerly anticipate IntenseDebate adding Askimet support, as their system of threaded comments, reputation, etc, is amazing. If this has helped you at all, please comment and say so!