WordPress 3 Site Blueprints

By Heather R. Wallace
    Advance your knowledge in tech with a Packt subscription

  • Instant online access to over 7,500+ books and videos
  • Constantly updated with 100+ new titles each month
  • Breadth and depth in over 1,000+ technologies
  1. Project 1: Migrating a Static Website to WordPress

About this book

Sure, WordPress can be used for blogging, but this powerful software is capable of so much more. With the right combination of plugins, themes, customizations, and configurations WordPress can be transformed into a community portal, an e-commerce site, and much more. While it is easy to get started with WordPress, its full power is not obvious. There is very little that WordPress can't do—if you can image it, then it's probably possible with WordPress. If you want to create a powerful, fully-featured blog or non-blog website in no time, this book is for you.

While some books merely talk about the capabilities of WordPress in general and leave you to figure out how they apply to your situation, WordPress 3 Site Blueprints takes a different approach. The first chapter will show you how to migrate from an existing static website to a WordPress blog. Each of the other chapters is devoted to the construction of a different type of site that can be created with WordPress and the right combination of themes and/or plugins. As you follow along, you will learn by doing because each of these nine chapters shows you how to build a WordPress-powered site from start to finish. That means that, by the time you reach the end of every chapter, you will have a fully-functional site online.

Each chapter provides easy-to-understand, step-by-step instructions along with screenshots to help you follow along easily. In addition, detailed information is provided to help you optimally configure each and every plugin and theme mentioned in this book so that you can get the most out of each of these sites. By the time you reach the end of each blueprint, you will have a fully functional site online that is ready for use as is or that you may customize further if you so desire.

Publication date:
August 2010


Chapter 1. Project 1: Migrating a Static Website to WordPress

Many websites start out being created with nothing more than HTML, CSS, and a few images. For some, that will always be enough and there will never be any need to change. For others, however, there will come a time when more is required. The individuals responsible for maintaining these websites might one day need the extra convenience that comes with publishing content with the push of a button or they might require the extra bells and whistles that can only be incorporated with ease thanks to a wide array of plugins. Whatever the reason, they will ultimately decide that they need to migrate their static website to something more robust and many will realize that now is the time to make the transition to WordPress.

This chapter is designed specifically for those who find themselves in this situation. At first, the prospect of making this transition might seem daunting and you might wonder where to begin. Rest assured that there's no need to feel overwhelmed because this chapter covers the process from beginning to end so that you will never get lost along the way.

In this chapter, you will learn how to:

  • Prepare for the transition

  • Temporarily keep your new website hidden from both visitors and search engines

  • Transfer the content from your old website into WordPress

  • Create a theme using your current template or select a new theme

  • Protect your website's position in the search engines

  • Make sure that your new website is error-free

  • Entice the search engines to update your listings once your completed website is online


Preparing for the transition

Before going any further, it's extremely important for you to create a backup of all of the files that currently make up your static website. That way you can ensure that none of the data from your original website is lost. This is important for two reasons. The first being that it's always best to keep a copy of every version of your website because you never know when you might need to refer back to it for one reason or another. Secondly, during the transition, you will need your static website to remain online and functional until your WordPress website is ready to go live. Should one of the files from your current website accidentally get deleted before the transition is complete, you can easily upload a replacement copy from your computer to get things back in working order.

After backing up all of the necessary files, you will next need to document the name of each of your web pages and its web address. This is best done using a spreadsheet. Open your spreadsheet program and then label the first column File Names. Next, label the second column URLs. Visit your website and then begin recording this information in your spreadsheet. Once you've finished, your spreadsheet should look similar to the one shown below.

This step is important because, before your WordPress website is made visible to the search engines, you will need to use this spreadsheet, along with the Redirection plugin, to create several 301 (moved permanently) redirects so that the previous URL for each of these web pages points to its new location online.


Installing WordPress

Now it's time to install WordPress on your server. You should be able to do this automatically, since many web hosts provide their users with a cPanel control panel that includes the Fantastico De Luxe autoinstaller. With Fantastico De Luxe, you will be able to automatically install several different applications, including WordPress.


Even if your web host doesn't offer cPanel with Fantastico De Luxe, it still may be possible for you to automatically install WordPress. To find out if automatic WordPress installation is possible, contact your web host and ask them if they provide an autoinstaller with their service. If you're lucky, then you just might find that they do offer something comparable to Fantastico De Luxe.

If your web host doesn't offer an autoinstaller, then you will need to install WordPress manually. At the WordPress website, you will find instructions for what they call the Famous 5-Minute Install. So, even if you do have to install the software manually it shouldn't take more than a few minutes if you follow the instructions found at http://codex.wordpress.org/Installing_WordPress#Famous_5-Minute_Install.

Hiding your new WordPress installation

Normally, after installing WordPress, you would get right to installing a theme, configuring the software to your liking, and then adding content. In this case, however, additional steps need to be taken to ensure that your WordPress installation temporarily remains hidden. Secrecy, at this point, is important for two reasons:

  1. When migrating from static HTML to WordPress, it's important that you continue to direct visitors to your original website for as long as possible. This measure will avoid a great deal of inconvenience and confusion that your visitors might otherwise suffer.

  2. While creating the WordPress version of your website, you don't want it to be prematurely indexed by the search engines because, at this point, it's still a work-in-progress.

So, the first thing that you need to do to keep your new website temporarily under wraps is locate the index.php file located in the main folder of your WordPress installation and then rename it to 1index.php. Adding the number one to the beginning of the file name will make it easier to locate when it comes time to return this file to its original name since the it should appear at the top of your file list just under .htaccess. Renaming index.php guarantees that your index.html file will continue to act as your website's home page for the time being.

Having done that, your WordPress website is now hidden from visitors. Now you need to take steps to ensure that it's also hidden from the search engines crawlers. To do this, begin by logging in to your WordPress Dashboard. Once there, click on Settings | Privacy. In this section, you will find the Privacy Settings screen that contains the Site Visibility settings for WordPress.

In this area, you can choose to make your site visible or invisible to the search engines. Since you don't want the crawlers to index these pages just yet, tick the radio button next to I would like to block search engines, but allow normal visitors. Then, click Save Changes.

This setting doesn't guarantee that search engines won't crawl WordPress since websites with this option selected have been indexed. Taking this measure does, however, at least reduce the likelihood of your WordPress website appearing in the search results until you're ready to reveal it to the crawlers.


Two methods for migrating content

There are two ways to get all of the content from your static website over to WordPress. The method that you choose will be determined by the number of pages in your current website as well as the availability of PHP5 on your server because the plugin used to automatically import content specifically requires this version.

As you might have guessed, a website with only a few pages is ideal for the manual method, while a website with several pages is better suited to the automatic method. Once you've determined which method to use, you can then begin the process of importing content into WordPress.

The manual method

If your static website consists of only a few pages, then the simplest option for getting the content from your static website over to WordPress is to just copy it from your old site and then paste it into the new one. Since the content on your old website existed as pages, it should do so on your new site as well.

Walking through this process will give you a feel for how it's done. For this example, suppose that you're recreating a page from your static site called Services. To do this, navigate to Pages | Add New. On this screen, enter Services as the title of this page. Then, paste all of the content that was previously included in the body of your static Services page into the text area. Now, click Publish to add this page to your site.

Repeat this process for each of the web pages found on your static website until all of your content has been transferred over to WordPress.

The automatic method

If your website contains several pages, then it's possible for you to avoid the tedious process of copying and pasting each one. Instead, you can import your content automatically. To do this, you will need to use the Import HTML Pages plugin available at http://wordpress.org/extend/plugins/import-html-pages/. As previously mentioned, in order for this plugin to function, your server must offer PHP5.

After installing and activating the plugin, go to Settings | HTML Import. On this page, you will find the HTML Page Import Options screen. The plugin should function as desired with many of these options left at their default settings. There are, however, two options that should be discussed.

In the textbox labeled Beginning directory enter the location of the folder that contains the pages from your static website.

Next, scroll down until you see a textbox labeled Phrase to remove from title page. If you included the name of your website in the title tags of your static site, then enter that name into the textbox. Failure to follow this step could result in your website's name appearing twice in the title bar.

Click Import using these options and the content from your static website will be imported into WordPress automatically.

This screenshot shows what the Services web page from the static website looked like before being imported.

In this screenshot, you can see what the newly created Services page looks like after being imported into WordPress with the Twenty Ten theme activated.

As you can see, this page wasn't imported perfectly. The two main problems are that the title is being displayed twice and that the text is being wrapped in to a narrow column. A look at the Services page from the administration area quickly reveals the cause of these problems.

When the page was imported, several unnecessary HTML tags were included along with the page's text. The only way to remedy this problem is to delete all of these unnecessary elements.

So, while the automatic method does save time versus the manual method, it isn't perfect. When using this method, various edits will still need to be made to these pages so that the content on your site will be displayed properly.


Partially revealing WordPress

At this time, you will need to locate 1index.php on your server and then return it to it's original name of index.php. Next, find index.html and then rename it to 1index.html. Both of these steps must be taken at this point because, once your theme is activated, you will need to be able to access your WordPress home page in order to proceed. With index.php in place and index.html renamed, your WordPress website will now be visible to visitors, but it will still be hidden from search engine crawlers.


Turning your current template into a theme

You may think that migrating to WordPress means that you will also have to give up your current website design. This, however, doesn't have to be the case. If you're happy with the way your website looks now, then it's entirely possible to continue using your current design. To do this, you will need to convert your static HTML/CSS template into a WordPress theme.


Your static website may have been designed so long ago that it was created with a deprecated version of HTML or it may not include a stylesheet (CSS). If that's the case then you should first update your design, so that it's compliant with the latest web standards. This will make the process of converting your template much easier and will allow you to create the best theme possible. After your update is complete, you can then proceed with converting your template into a theme.

Inner workings of WordPress

WordPress is unlike static websites in that a great deal of the information displayed onscreen isn't hardcoded into the web page. Instead, template tags are placed in various template files where hardcoded information would normally appear. These template tags send queries to the database, retrieve information, and then incorporate the results into the web page. For example, when building a static website you would include the page title by using the following HTML code:

<title>Packt Publishing – About Us</title>

For every page of a static website, you need to manually include a unique title. With WordPress, however, the website name and title for each web page is dynamically generated by two template tags. In this way, WordPress can display a unique title for each page by querying the database. As you can see, an updated WordPress-compliant title looks very different from a static HTML page title.

  <?php wp_title('&laquo;', true, 'right'); ?> 
  <?php bloginfo('name'); ?>

Once you've finished creating your theme, the output shown in your browser's title bar will look similar to the following screenshot. The exact title displayed in the title bar will, of course, depend upon which web page you're currently viewing.

A WordPress page is the sum of its parts

When designing a static website, a different file must be created for each page. Within these files, the header, content, sidebar, and footer are all present. WordPress differs from this in that each section of a WordPress web page is contained within its own template file. WordPress then assembles each of these pieces on the fly to generate a complete web page.

Now that you understand how WordPress themes work, it's time to begin building your template files.

Beginning of a theme

Think of a name for your new theme. Once you've decided what you would like to call it, create a new folder on your computer with this name. Copy the images folder from the backup of your static website that you created earlier and then paste it into your theme's folder.

Open your text editor, create the following blank files, and then save them to your theme folder.

  • functions.php

  • header.php

  • index.php

  • single.php

  • page.php

  • sidebar.php

  • footer.php

Copy the stylesheet used on your original site and then paste it into the theme folder for your WordPress theme. Next, rename the stylesheet that you just pasted into your new theme folder so that it's now called style.css.

Open style.css in your text editor so that a stylesheet header can be added at the top of the file. This information is required because, without it, your theme won't appear on the Manage Themes screen located within WordPress. The following is an example of what a well-formatted stylesheet header should look like. You will, of course, need to customize it with information that's appropriate to you and your theme.

Theme Name: Your Theme's Name.
Theme URL: Your Theme's URL
Description: A few sentences describing your theme.
Author: Author's Name
Author URL: Your website address.
Version: The current version number for your theme.

After adding the stylesheet header to this file, be sure to save the changes that you've made.

Segmenting the template from your previous site

Segmenting the HTML template used on your static site is the next step in this process. Your aim will be to separate the template into four sections. Open a page from your site's original HTML template and then think about which content would best be placed in each of the header.php, sidebar.php, and footer.php templates.

Begin by surrounding the header section of your template with the following comment tags:

<!-- END HEADER -->

Even though this content will be located in header.php, that doesn't mean that the final comment tag for this section should be placed immediately after the closing head tag. Instead, it should be placed just before the area where the page content begins. For example, if your original site template contains a logo area and a horizontal menu, then the ending header tag would need be placed just after that.

If your template has a sidebar, then its beginning and ending should be marked with the following comment tags:

<!-- END SIDEBAR -->

Next, the footer should be surrounded by these comment tags.

<!-- END FOOTER -->

There will now be a section of code located in the center of your template that hasn't been designated with comment tags. Surround this section with the following:


Now that the HTML template used on your static website has been segmented into sections, it's time to begin building the individual files that will comprise your WordPress theme.

Creating the functions file

Before building the templates that will comprise your theme, you should first work on creating the functions.php file. This file allows you to add additional functions to WordPress in order to further extend the functionality of your WordPress site.

With the code that you're about to add to functions.php, along with the code that you will be adding later on to your various template files, you will be able to do things such as implement a widget-ready sidebar on your site as well as take advantage of many of the new features that are now offered in WordPress 3.0.

A sidebar isn't much of a sidebar if it isn't widget-ready. So, the first piece of code that you need to add to functions.php will be responsible for enabling this functionality on your site.

Open functions.php and then enter the following code. What this code does is tell WordPress that your theme includes a widget-ready sidebar.

if ( function_exists('register_sidebar') )
    'before_widget' => '',  
     'after_widget' => '',  
     'before_title' => '<h2>',  
     'after_title' => '</h2>',  

Now, add the following code that will allow you to make various changes to the background of your site without editing your stylesheet. When you would like to make changes, navigate to Appearance | Background where you will find the Custom Background screen.


Place the following line of code into functions.php, so that feed links will automatically be added to your theme's header:

add_theme_support( 'automatic-feed-links' );

Now, add the following PHP closing tag to the end of this file:


With the creation of functions.php complete, you can begin work on your theme's first template file.

Creating the header template

Copy the code in the segmented HTML template file that's located between the two header comment tags and then paste it into the blank header.php template that's located in your WordPress theme folder.

When building a WordPress theme, it's important to include a DOCTYPE because it tells browsers which version of HTML or XHTML you're using and makes it easier for browsers to render your web page correctly. Its presence is also important because any theme lacking this information won't pass validation testing.


Validation testing services check websites to ensure that they don't contain errors. This is important because if a site doesn’t validate it may not appear as the designer intended it to when it’s viewed in various browsers.

If your header doesn't already have a DOCTYPE statement, add the following line of code at the very beginning of the header.php template.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Next, replace <html> with the following. The purpose of the template tag that's included within this <html> tag is to tell the browser which language you're using to create your web page.

<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>

From there, remove the opening and closing head tags as well as everything in between them. With the original <head> tag gone, a new one has to be added to take it's place. This one, however, won't be exactly like the old one. That's because it contains additional information to tell browsers that your site supports XFN.


To learn more about XFN, you can visit the XFN: Introduction and Examples page found at http://www.gmpg.org/xfn/intro.

Here's the new opening head tag that you need to add to your template:

<head profile="http://gmpg.org/xfn/11">

This next piece of code should look familiar since it was presented earlier. As you will recall this code is used to dynamically display your blog name and a unique title for each of your web pages.

<?php wp_title('&laquo;', true, 'right'); ?>
<?php bloginfo('name'); ?>

Next, enter the following code to include meta information for your website:

<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />

This next line of code is used to provide a link to the stylesheet for your theme.

<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />

The following code must now be added so that threaded comments will function properly on your website:

<?php if ( is_singular() ) wp_enqueue_script( 'comment-reply' ); ?>

Next is what is known as an Action Hook template tag. Action Hooks must be included in order for some aspects of WordPress to operate properly. For example, without this Action Hook, some plugins won't function. That's why you must now add it to header.php.

<?php wp_head(); ?>

With all of that code in place, you can now add </head> to close this section.

The next line of code that you need to enter will depend upon whether your site currently displays a text title or a logo image. Either way, you will first need to locate the section of code that's currently responsible for displaying this information.

If your website has a text title, then replace the placeholder title with the following code:

<a href="<?php bloginfo('url'); ?>/"><?php bloginfo('name'); ?></a>

If your site uses a logo, then replace it with the following line of code:

<a href="<?php bloginfo('url'); ?>"><img src="<?php bloginfo('stylesheet_directory'); ?>/images/logo.png" alt="Logo" style="border: none;" /></a>

You will, of course, need to replace logo.png with the appropriate name for your image in order for it to appear. You should also replace "Logo" in the alt attribute with the name of your website.

Whether you add either of these next two template tags will depend upon how your current web design is laid out. If your header section contains a navigation bar, then one of the two following template tags will be required.

To place either of them, first locate the unordered list responsible for displaying your navigation bar and then remove all of the list items.

Place the following template tag where your list items were previously located if you would like to display links to your pages:

<?php wp_list_pages('title_li='); ?>

If, instead, you would like the navigation bar to display links to your categories, then this template tag should be entered where your list items previously appeared.

<?php wp_list_categories( $args ); ?>

After adding this last template tag, save header.php. With this template complete, it's time to create the index.php template for your theme.

Creating the index template

Return to your HTML template file, copy the code located between the two main content comment tags, and then paste it into the index.php template for your WordPress theme.

In order for WordPress to assemble your template files into a complete web page, you need to include template tags to call the other sections of the site. The first section that you need to call is the header. To do this, enter the following template tag at the beginning of index.php.

<?php get_header(); ?>

The sidebar.php and footer.php templates also need to be called. To do this, enter these template tags at the bottom of index.php.

<?php get_sidebar(); ?>
<?php get_footer(); ?>

With those in place, it's now time to concentrate on adding The Loop to index.php. In WordPress, The Loop is responsible for displaying content on your website. Without it, your site would display the header, sidebar, and footer with nothing in between.

The Loop contains several lines of code that perform many different functions. Once again, each section will be added individually, so that you will have a clear understanding of the action that each piece of code performs.

Find the section of your site where your content normally appears. Then, place this code, which is responsible for beginning The Loop, just after the <div> tag that begins your content area.

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>

The next template tag that you're about to place will be responsible for displaying a linked title to the content published on your site. So, locate the area where your content heading appears. It will, most likely, be surrounded by headings tags. Once you find it, remove the placeholder headline and then replace it with the following template tags. If the headline was surrounded by heading tags, then make sure that these template tags are encapsulated in them too.

<div id="post-<?php the_ID(); ?>"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></div>

Now you need to add code so that the area known as the post metadata section will be displayed. It's important that the postmeta data is added to your template because this section typically includes information on the author, category, post date, and comment count, as well as a link to edit the post if you're logged in. This information is displayed by placing the following code into your template.

Posted in <?php the_category(', ') ?> by <?php the_author() ?> on <?php the_time('F jS, Y') ?> | <?php edit_post_link('Edit', '', ' | '); ?><?php comments_popup_link('No Comments', '1 Comment', '% Comments'); ?>

Next is the template tag responsible for displaying your page's content. This should be placed in the section that currently contains the placeholder content for your site. If this placeholder content is surrounded by <div> tags, or any other tags, then be sure to encapsulate this template tag in them as well so that the appropriate styles will be applied.

<?php the_content('Continue Reading...'; ?>

Finally, enter the following line to end The Loop:

<?php endwhile; ?>

The Loop may have ended but that doesn't mean that you're finished building the index.php template just yet. That's because a few more lines of code still need to be added for index.php to be complete.

If your blog is set to display a certain number of posts per page, then your visitors will need a way to navigate between those pages so that they can access all of your content. Add the following template tag to index.php and navigation links will appear on your index, category, archive, and search pages.

<?php posts_nav_link(); ?>

Should a visitor arrive at a post or page that doesn't exist (404 error), you will need a way for WordPress to handle the situation. You can also make things more convenient for visitors by adding a search box, so that they can attempt to locate the content they were hoping to find. This can be done with the following lines of code. Just add this code to index.php and it will act as a combination 404/search page should the need arise.

<?php else : ?>
<h2>Not Found</h2>
<p><?php _e("Sorry, no posts or pages could be found. Why not search for what you were trying to find?"); ?></p>
<?php get_search_form(); ?>

With that code in place, visitors who navigate to a non-existent page will now see a screen similar to the one shown in the following screenshot:

At this point, you just need to add the next line of code to index.php and then this template will be completely finished.

<?php endif; ?>

Now, save index.php, so that you can begin work on your theme's single.php template.

Creating the single template

To create this template you need to open single.php and index.php in your text editor. Copy all of the content from index.php and then paste it into single.php. With that content in place, single.php is almost complete. Before it's finished, however, you will need to make some edits and additions to this template.

To begin, you need to edit this page so that the post title is no longer linked. To do this, look for the following code:

<div id="post-<?php the_ID(); ?>"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></div>

Then, replace the preceding with the following.

<div id="post-<?php the_ID(); ?>"><?php the_title(); ?></div>

Now, look for the following template tag that's responsible for displaying the content on your page.

<?php the_content('Continue Reading...'; ?>

Since single.php displays the full post, 'Continue Reading...' doesn't need to be included in this tag. So, replace the preceeding template tag with this one.

<?php the_content(''; ?>

Look for the following template tag that's used to display navigation links on your non-single pages.

<?php posts_nav_link(); ?>

Once you locate that tag, replace it with the this code that's used to display navigation links on single post pages so that visitors can easily move backward and forward between your posts.

<?php previous_post_link('&laquo; % link', '%title'); ?> <?php next_post_link('%link &raquo;') ?>

Now, look for the end of The Loop. When you find it, place the following template tag above it so that visitors will be able to leave comments on your posts.

<?php comments_template(); ?>

Then, remove all of the code used to display the 404/search box, since this code only needs to be present in the index.php template.

With those changes made, you can now save single.php before beginning work on your theme's next template.

Creating the page template

Now it's time to create the template that will be used to display the pages on your site. Building this template couldn't be easier since it's almost an exact duplicate of single.php.

To begin, open single.php and page.php in your text editor. Copy the content from single.php and then paste it into page.php.

Now, you only need to perform one edit. Look for the following code and then remove it from this template.

<?php previous_post_link('&laquo; % link', '%title'); ?> <?php next_post_link('%link &raquo;') ?>

Save page.php and then you can begin work on building a widget-ready sidebar for your site.

Creating the sidebar template

In the template file for your HTML website locate the section of code between the two sidebar comment tags and then paste it into sidebar.php. Delete any content while leaving the tags responsible for styling the sidebar in place. Then, add the following code between the styling tags.

<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?>
<?php endif; ?>

After those lines of code have been added, save sidebar.php.

If you have widgets enabled in WordPress, this piece of code, along with the previous entry that you added to functions.php, will make it possible for widgets to display in your sidebar. If there are no widgets in use, then the sidebar will display nothing.

Now, you're probably wondering what you're supposed to do with all of the content that was previously located in your sidebar. Well, there's little point in hardcoding it into the sidebar.php template. Instead, you should take all of that content and incorporate it into WordPress using widgets. If you previously had a list of categories in your sidebar, then place them in your new sidebar with the Categories widget. Perhaps you had a paragraph containing contact information. That can be included using a Text widget. Anything that your sidebar previously contained can easily be added to your site with the use of widgets.

Now that the sidebar.php template is finished, work can begin on the final template that you need to build for your WordPress theme.

Creating the footer template

Once again, open the template file for your original HTML website. This time, copy all of the code located between the footer comment tags. This should then be pasted into the footer.php template. Other than that, only one piece of WordPress-related code needs to be added to this template file. Once again, you will need to include an Action Hook so that certain plugins will function properly. The following Action Hook should be placed at the top of footer.php.

<?php wp_footer(); ?>

With that, the footer.php template is complete, so save it before moving on to the final step that you will need to complete before you can upload your WordPress theme to your server.

Adding comments templates

Prior to the release of WordPress 3.0, themes could use template tags to call files without the theme actually containing those files. For example, a theme could call comments.php without the theme including that particular template.

In that instance, WordPress would simply substitute the comments.php template from another theme. Since the developers of WordPress have updated the default theme to Twenty Ten, this will no longer be an acceptable practice. Instead, WordPress themes will be expected to contain all of the files that are called via template tags.

You've already created many of the templates required in order for your theme to comply with these new standards, but there are still two that are missing. They are comments.php and comments-popup.php. Without these templates, your theme won't be fully compliant.

The easiest way to go about adding these files to your theme is to copy them from the default theme that was used on version 1.5 through 2.9 of WordPress.

This theme can be obtained from the WordPress Free Themes Directory at http://wordpress.org/extend/themes/default. Once there, download the Default theme to your computer. Next, unzip the ZIP file and then paste comments.php and comments-popup.php into the folder containing your theme.

With the addition of those two files, your theme now contains all of the necessary templates. So, upload the folder that contains your theme to the wp-content/themes directory located on your server.

Polishing your newly created WordPress theme

Now that your WordPress theme has been uploaded, it needs to be activated. To do this, log in to the Dashboard and then navigate to Appearance | Themes. Now, click the Activate link for your theme.

After your theme has been activated, you might notice that it looks very much like your old template, but that certain elements aren't exactly right. This is likely to occur since new elements have been introduced into your website. Since these elements didn't previously exist in your original HTML template there's nothing in your stylesheet to dictate how they should look.

For example, the post-metadata section will be a new addition to your website, so you may find that the content in this section isn't formatted properly. The preceding screenshot provides an example of a post metadata section without special styling. As you can see, its appearance is identical to that of the post which causes the post metadata section to become distracting.

After an entry is added to the stylesheet to govern the formatting of the post metadata section, it then blends in nicely with the overall appearance of the website.

If you find an element of your website that doesn't look right after building your theme, then create a new entry in your stylesheet to format the layout of that section. This process of making additions or edits to your stylesheet will need to be undertaken for any areas that don't look quite right. Once this process is complete, your theme should look nearly identical to your original HTML template with the only difference being the addition of the new WordPress-specific elements.

Adding a screenshot for your theme

When you activated your theme, you may have noticed that its title and description were displayed but that an image wasn't visible. That's because you need to create a screenshot of your new theme in order for it to appear on the Manage Themes screen.

To do this, take a screenshot of your site's home page. Now, you need to shrink this screenshot down to the right size, so open your image editing program and then paste the contents of your clipboard as a new image. Crop out any unnecessary elements (such as your browser) and resize the image so that it measures 300 x 255. Save the image as screenshot.png and then upload it to your theme folder.

Now a screenshot of your site's new theme will now be visible on the Manages Themes screen.


Starting fresh with a new theme

Perhaps you don't want to keep your old website design and would prefer to make a completely fresh start. If that's the case, then a new WordPress theme is in order. When selecting a new design, there are certain things that you will need to consider. Do you need one, two, or three columns? Is the theme that you're considering widget-ready? Is the stylesheet easy-to-read, so that you can make customizations if needed?

It's best to take the time to find a high-quality theme that you will be happy using for years to come, rather than choosing a sub-standard theme only to discover a few months later that it doesn't meet your needs.

There are a myriad of free and premium themes on the Internet, and it can be a bit of a chore to find the best ones if you don't know where to look. So, rather than aimlessly searching for a theme, you should begin your search at the following sites.

Free themes

If you want to browse through a massive collection of free themes, then the Install Themes screen should be your first stop. You can reach this screen by navigating to Appearance | Themes. Then, click on the Install Themes tab. Using the Feature Filter, you can search for themes that match a variety of criteria. For example, you could specify that you only want to browse for blue themes that contain two-columns. On this screen, you can also search for themes by keyword, author, or tag.

Smashing Magazine frequently partners with the Internet's top web designers to release some of the highest-quality freely available WordPress themes. Unfortunately, the themes aren't placed into a category of their own. Instead, you must visit the site at http://www.smashingmagazine.com/ and then browse through the Freebies category in order to locate all of the free themes that are available for download. This minor inconvenience is, however, more than worth the trouble because the themes available at this site are among some of the best that you will find.

Premium themes

ThemeForest claims to be the "biggest marketplace of its kind" and, judging by their selection, this certainly seems to be the case. The site, located at http://themeforest.net/, is filled with a large collection of premium website templates and CMS themes, so there's no shortage when it comes to selection. Each design is inspected by a reviewer before it appears on the website to ensure that only quality templates and themes are offered for download.

Elegant Themes, which can be found at http://www.elegantthemes.com/, is a subscription service that allows its members access to WordPress themes for a nominal yearly fee. The site already contains a collection of previously released designs and new themes are added on a regular basis. In addition, members have access to a support forum where a responsive staff offers assistance for any technical issues that might arise.

Premium Themes, located at http://templatic.com/, is basically a combination of the two previous sites in that you can buy individual themes or sign up for one year to become a member of The Premium Themes Club. Membership in the club grants you access to download all of the designs in their collection.


Maintaining search engine ranking

During the process of migrating from a static website to WordPress you will be adding new pages and posts. You will also eventually delete all of your original HTML pages since they will become unnecessary and redundant. This means that your previous content will now exist on pages that are located at completely different web addresses. If nothing was done, then your website would lose its search engine ranking and PageRank for each of those deleted pages. Another consequence would be that anyone clicking those outdated links would arrive at 404 pages rather than the web pages that they hoped to visit.

This is a less than desirable situation and, luckily, it can be avoided by installing the Redirection plugin found at http://wordpress.org/extend/plugins/redirection/. With the help of this plugin, when the search engines arrive to crawl your website, they will be sent to the updated location for all of your old web pages. These redirects will also be beneficial should a visitor happen upon an outdated link since they will also be redirected to the page's new location.

Introducing Redirection

The Redirection plugin is primarily designed to manage 301 redirects. This functionality is especially useful when migrating from a static website to WordPress as many 301 redirects will be needed in order to direct the search engine crawlers and visitors to your new web pages. In addition, this plugin also has the ability to track 404 errors. This will prove useful as it will allow you to monitor your website for errors and to ensure that everything is performing as it should be.

In order for this plugin to operate properly, permalinks need to be enabled on your site. You should, therefore, configure that WordPress setting before installing and configuring the Redirection plugin, so click on Settings | Permalinks. On this screen, in the Common settings area, choose any of the available options other than default. Then, click Save Changes.

Setting up and configuring Redirection

After installing and activating the plugin, go to Tools | Redirection. This will take you to the first page of the Redirection settings and configuration area. It's on this screen that you will enter all of the necessary 301 redirects.

To do this, open the spreadsheet that you previously created. Copy the URL of the first static page listed in the spreadsheet and then paste it into the Source URL textbox. Next, enter the new URL for that web page into the Target URL textbox. Then, click Add Redirection. Repeat this process for each of your static web pages.

Clicking Groups, Modules, and Options will take you to additional settings screens for this plugin. These remaining options can, however, be left at their default settings and everything should run smoothly.


Completing the switch to the new website

You already began to make the switch over to your new website when you reverted index.php back to its original name and renamed index.html. With your 301 redirects in place, it's time to complete the transition. The first thing that you need to do is delete all of the files that comprised your original website.

Next, return to the Privacy Settings screen by clicking on Settings | Privacy. Once there, tick the radio button next to I would like my site to be visible to everyone, including search engines (like Google, Bing, Technorati) and archivers. With that, your website will now be visible to both human visitors and search engine crawlers.


Testing your new website for errors

Now you must ensure that your new website is free from errors. To do this several quality-control measures will need to be taken. With the help of the following tools, you can virtually guarantee that your website will run smoothly.

W3C validators

Much of your quality-control checking will be done on the W3C website. At this site, you can check the markup, links, and CSS of your WordPress website.

Link checking

Begin by using the W3C Link Checker located at http://validator.w3.org/checklink. As the name implies, this utility crawls your WordPress installation to test your links, so that you can be sure that they all function properly.

When you arrive at the W3C Link Checker, type the URL for your home page into the textbox and then click Check.

Once your website has been processed, you will receive a set of results that will either detail any problems that were encountered or inform you that your website is free from linking errors. Should you find that linking errors do exist, correct the troublesome links and then run the utility again until your website receives good results.

MarkUp Validator

Next , check the validity of the markup used in your WordPress theme by visiting the W3C MarkUp Validator at http://validator.w3.org/.

Once there, enter the URL for your home page into the Address textbox and then click Check.

After the utility checks your website, you will be shown a results screen that will either detail errors and warnings or inform you that your website has passed inspection. If you discover that your theme contains markup errors, you will need to fix these problems, and then run the validator again until your website is found to be error-free.

CSS Validator

The last of the WC3 validators that you will need to run is the CSS Validator found at http://jigsaw.w3.org/css-validator/. As you might have guessed, this utility will check your site and stylesheet for possible errors.

Enter the URL for your home page into the Address textbox and then click Check.

Once your CSS has been checked, you will be taken to the results screen, which will either present you with information detailing the errors that were encountered, or inform you that your CSS is error-free. If problems were found, you will be shown these errors and warnings along with a section containing valid CSS information that you can use to help you correct these issues. After correcting these problems, run the utility again until no errors are found.

Cross-browser compatibility

A website isn't much good if it doesn't display properly in all the major browsers. That's why cross-browser compatibility is so important. A visit to the Adobe BrowserLab at https://browserlab.adobe.com/, will provide you with an exact rendering of your website as it appears on all major browsers.

Should you discover that your website doesn't display properly in one of the major browsers, then you will need to make changes to your design in order to correct the issues. Continue tweaking your design and subjecting it to cross-browser compatibility testing until everything displays properly.

Content inspection

Now that you've verified that your website is technically sound you next need to ensure that all of your content appears correctly. To do this, visit your website and inspect each page. Has all of the content transferred as you intended? If not, visit the Dashboard to manage the offending posts and/or pages.


Submitting a sitemap to the search engines

Just because you've updated your website that doesn't mean that the search engines will crawl all of your web pages. That means that the search engine listings for some of your web pages could be updated quickly while others remain outdated for quite some time. There is, however, something that you can do to encourage the search engines so that they will be more likely to give your website a thorough crawling.

What is needed, in this situation, is a site map. Luckily, it's possible to create a site map for your entire website with the help of the Google XML Sitemaps plugin.

Introducing Google XML Sitemaps

This plugin, which can be found at http://wordpress.org/extend/plugins/google-sitemap-generator/, is designed to generate an XML site map for your website. A site map is useful because it will provide a road map for the crawlers so that they can easily find the new locations for all of your website's old pages as well as discover any new pages or posts that you might have added.

With this plugin, you will only need to customize a few settings and then click a link in order to generate a site map of your entire website.

Setting up and configuring Google XML Sitemaps

After installing and activating the plugin, go to Settings | XML-Sitemap. From this page you can configure all of the settings for this plugin as well as generate your site map.

At the top of the screen, you will see a message informing you that the site map for your website hasn't been generated yet. That's fine. This message should just be ignored for the time being. You need to focus on configuring some of these settings first.

In the Basic Options section, under Sitemap files, deselect Write a normal XML file (your filename). All search engines support compressed site maps, so there's little point in wasting the disk space that would be used by creating an uncompressed site map.

The options in the Building mode section should be left at their defaults, so move on to Update notifications where you can select which search engines you want to notify about updates to your website. By default, all of the search engines are selected, except for Yahoo! Add a checkmark next to Notify YAHOO about updates of your Blog, so that this search engine is also selected.

In order for Yahoo! to receive notifications you will need to provide an API key. If you already have a Yahoo! API key, enter it into the textbox shown in the following screenshot:

If you don't have an API key, right-click Request one here and then open that link in a new browser window. Doing this will direct you to a Yahoo! Login screen. Once there, either log in or create a new Yahoo! account. Once you've logged in, you will then be taken to a Developer Registration page. Provide the necessary information and then click Continue. You will then be provided with an application ID. Copy this string, return to the settings screen for Google XML Sitemaps, and then paste your API key into the Your Application ID textbox.

All of the settings under Advanced options should be left at their defaults. You can also scroll past the Additional pages area until you reach the Post Priority section of the screen. At this point, since your WordPress website is new, your posts won't have any comments so it doesn't make sense to leave this set to the default option that uses the number of comments to calculate the post priority. Instead, tick the radio button next to Do not use automatic priority calculation.

All of the remaining settings should be left at their defaults, so scroll to the bottom of the screen and then click Update options. After the screen refreshes, click the link at the top of the page to generate your site map. The plugin will work to build your site map and, when it's complete, a screen that details the results of the build will appear.



By now, the transformation will be complete and your previous site will have successfully evolved from static HTML into a fully-functional, dynamic WordPress website. You could consider this to be the end of this project or you could look at it as being just the beginning.

WordPress is capable of doing so much. With skill, imagination, and plugins your website could grow even further. Now that you have the power of WordPress at your disposal, why not make the most of it and explore the possibilities?

In this chapter, you learned the steps required to transfer a static HTML website over to WordPress. With this information, you now know how to make this transition seamlessly. You also learned how to redirect site visitors and search engine crawlers so that no traffic is lost as a result of the changes that have been made to your site.

In the next chapter, you will learn how to build a community portal where members will be able to build personal profiles and interact with their fellow members.

About the Author

  • Heather R. Wallace

    Heather R. Wallace is an author, WordPress consultant, and web developer who has been building websites since 1997. She has developed and managed several different websites and blogs; many of which have been powered by WordPress.

    While Heather manages several websites, it's at WPBlogBot.com that she offers her consultation services on a wide variety of WordPress-related tasks such as installation, customization, troubleshooting, and more.

    Browse publications by this author
Book Title
Unlock this book and the full library for FREE
Start free trial