Being amongst this year’s design graduates means a large number of my friends and acquaintances are currently in the process of building an online portfolio before they hurl themselves headlong into job market (read: sitting on Coroflot.com hitting F5 repeatedly). The upshot of this is as that as the go-to web guy for most of these people I’m getting a lot of web development-related questions, which I try to answer as plainly as possible without speaking in binary.
A couple of people have asked me about getting started with WordPress; furthermore, what I consider to be a good setup when starting from scratch. I’ve been giving this some thought recently, partly because I’m a big fan of WP and spend a lot of time working with it, but also because it has forced me to pin down what I really find invaluable amongst the plethora of plugins, snippets, themes and hacks that exist for the nigh ubiquitous CMS. This article isn’t intended to be an exhaustive list of every add-on you will ever need, but rather a succint overview of what I consider to be the most function-rich combination of third-party and native code for the average WordPress user and developer.
Plugins
There are a number of plugins that I consider so essential I’ve come to treat them as part of the default WordPress furniture. In no particular order they are:
WordPress Database Backup
A plugin to save your bacon should your $2 per month shared hosting plan from exsovietservers.ru happen to implode on itself; WordPress Database Backup is an install-and-forget plugin that schedules hourly, nightly or weekly backups of your WP installation’s SQL file. The backup is automatically emailed to a specified address, which, if is a GMail address, can be filtered straight into your archive ready for impending server apocalypse.
Contact Form 7

Contact Form 7 as seen on catherinebruton.com. Strict validation and easy template integration are just two of the myriad features offered by this free plugin.
A cursory search of WP’s plugin index with the term ‘contact form’ returns 580 results. I in no way am claiming that I’ve tried and analysed any more of these plugins than I could count on one hand, but Contact Form 7 does its job admirably, and has fantastic documentation.CF7 supports multiple forms per site (generating custom shortcodes for each); enables easy form building with validation-enabled fields for email, CAPTCHA fields (when used in conjuction with the Really Simple CAPTCHA plugin), quizzes, radio etc; and custom message formatting for the recipient, ie you.
Google XML Sitemaps

Google XML Sitemaps generates a file to be parsed by web crawlers, and will give Google et al a better picture of your site's page hierarchy and content
A really simple plugin that generates an XML sitemap based on the pages of your website in a format readable by search engine crawlers. This plugin is especially useful when managing your website on Google Webmaster Tools, as the sitemap, automatically generated in the root of your WP installation, can be submitted for crawling.
Custom Post Type UI
Custom post types allow your WordPress installation to become less blogging platform and more state-of-the-art CMS. While the functionality of custom post types and custom taxonomies has been around for over a year now, there is still no way of managing post types from within the WordPress UI. Setting up custom post types in functions.php is not a complicated procedure, but it’s still nice to have a visual overview of the post types available. Custom Post Types UI offers a simple UI that allows the creation and management of post types and the assignment of custom taxonomies. Furthermore, the plugin generates the code necessary to register post types in functions.php file, enabling easy migration between sites and themes.
TentBlogger FeedBurner RSS Redirect
This super simple plugin modifies your .htaccess file to redirect visitors accessing your RSS feed from the raw XML feed to a Feedburner account. This is especially useful given Chrome users have no native parser for XML, and it allows users to easily subscribe to your feed via their RSS reader.
CSS Cache Buster
There are few things more frustrating for a developer than having your changes rendered invisible by overzealous caching. CSS Cache Buster relieves some of that frustration by ensuring that every page serves a freshly loaded version of your stylesheet by adding version tags to the link. The only gotcha with this plugin is that you must be calling your stylesheets using the WP function ‘get_bloginfo’, and not a hardcoded href.
Functions
The functions.php file inside your theme is an invaluable resource when it comes to improving WP’s default functionality. By pasting in a handful of lines you ensure that your theme is equipped with a level of functionality that can really make the difference.
Featured images for posts
Featured images allow you to attach a key image to a post or custom post. Once saved into your functions file, you will see a panel called ‘Featured Image’ in WordPress when authoring a post.
//add featured image support add_theme_support('post-thumbnails'); //set the default featured image size set_post_thumbnail_size(300, 180, false);
After setting this, in your theme file use the following line of code to output the attached image.
the_post_thumbnail();
Find more information on featured images on the WordPress Codex.

By enabling featured images in your functions.php file, you will cause the Featured Image panel to appear in your WordPress installation.
Custom Excerpt Length
When looping through posts, for example on a news page, you’ll want to use WP’s the_excerpt function, which, as you’d expect, outputs an excerpt of the post currently being iterated in the loop. The only problem with this function is that by default you have no control over how much text is output. The following snippet allows you to change that:
//Custom Excerpt Length function new_excerpt_length($length) { return 24; } add_filter('excerpt_length', 'new_excerpt_length');
Simply replace the value within the ‘new_excerpt_length’ function with the desired number of words to output.
Enable Custom Menus
Since WordPress 3, administrators have had the option of building custom navigation menus and including them in their themes. By default though, this functionality is disabled. To enable it, include:
add_theme_support('menus');
To output a menu, use the following:
wp_nav_menu( array('menu' => 'My Menu' ));
Read more about custom menus on the Codex.
Themes
There are thousands of themes out there for WordPress, some good, some bad, some free, some not. Looking at this from the perspective of someone who builds sites with bespoke designs I pretty much always start with a super-basic, barebones theme for a couple of reasons. Firstly, you’re less likely to leave a load of erroneous styles, images and functions in your site that you don’t actually need. Second, if you’ve written the majority of the code at work you’ll know how to fix it if something goes wrong. With that in mind, there’s really only one theme I need to talk about here, and that’s the Boilerplate theme. There are plenty of other barebones themes out there, but for my money this is the best.
Boilerplate
HTML5 is the future of the web. Fact. The bare-bones HTML5 Boilerplate package is a project from web guru Paul Irish et al that provides base-level code to help kickstart your HTML5 project. It allows you to use the latest markup technology without having to worry about backwards compatibility (thanks to the use of the great Modernizr script), and makes it easy to cater for all browsers and devices. Boilerplate comes packaged with a build script that employs some nifty tools for publishing your site, including tidying and minification of code, optimisation of images and generally reducing page weight.
The WordPress version of Boilerplate follows the same principles, and provides a great platform for building a bespoke theme. The theme comes with an admin area within the WP UI that allows customisation of the theme based on your needs – which Doctype to use, which scripts to include, whether to use Internet Explorer conditional stylesheets etc.
If you’re less comfortable with diving headfirst into a DIY theme then Boilerplate probably isn’t for you – there are after all lots of themes out there using HTML5 and general good coding practices. However for those who want to put their best foot forward (and maybe learn a little HTML5 in the process) when building their site, it’s a great starting point.
In conclusion, while there are countless millions of plugin, functions and theme combinations when building a WP site, I’ve attempted to round up what I consider to be the best foundational elements of a new WordPress project.
One of the best things about WP is the huge developer community surrounding it, and the constant stream of fantastic extensions to its codebase. Therefore I’ll attempt to keep this list updated with major releases that I feel would benefit it.


