A How-to Guide to Migrating a Website to WordPress

by Josh Fialkoff on October 25, 2008

Over the past few months, I have been working with a client converting his existing Website into a site built on WordPress.

I am writing this post to document the steps I took in this process, both to record for myself (something I can refer to on future projects) and to help other people who want to migrate a site onto WordPress.

I also hope that people with more experience in this will comment on this post to help make it more comprehensive.

Step 1: Domain

The first thing I did was to determine where to house the new site during its development.

There are two choices:

  • Install WordPress in its own directory (i.e, www.domain.com/WordPress)
  • Install WordPress on a separate domain.

My client owns many domains which point to his existing site (happily, this was already done using 301 redirects).

I looked at each of these domains with an eye on the following points:

  • Inbound links: How many other sites do the major search engines recognize as linking to the domain? (The more links, the higher the domain’s potential value).
  • Domain age: How long has the domain been registered? A domain that’s been registered since 1995 is potentially more valuable than one which was registered in 2008.
  • Alexa Rank: The lower the number, the better.
  • Page Rank: While Page Rank is not a precise barometer of a site’s value, it is one indicator.

This is not an exhaustive list of characteristics which should be evaluated for domain analysis, but it’s a good basic list for this task.

After I found the domain with the least search-engine importance, I created a robots.txt file, telling the search engines not to “follow” any of the pages on the domain, nor to “index” any of the pages. Check out The Web Robots Page for the specific code.

This is an important step because I don’t want Google to start indexing the site while I’m working on it and I certainly don’t want prospective customers to go to the site.

Step 2: Install WordPress

Now that I’ve chosen the domain, it’s time to install WordPress. This may vary, depending on your hosting company.

WordPress offers a 5-minute setup guide, which will work for most.

In addition, some companies have tools which set it up automatically.

Others force you to make changes to a WordPress file.

If you’re not comfortable with code, it’s best to look for a hosting company that offers automatic installation.

Step 3: Choose a Theme

One of my favorite aspects of WordPress is the wide array of themes available (mostly for free).

Picking a theme is an important part of the process because it will determine what you may, or may not be able, to do on your site.

For instance, not all themes are widget ready. Under most circumstances, you will want to pick a theme which is widget ready.

Another consideration is how many columns you want. Themes range from one column to four columns.

While it’s quite easy to change themes, if you intend to customize your theme extensively, it’s best to find one that you think you’ll want to use for a while. Otherwise, you may have to do some work twice.

The WordPress themes directory is not extremely user friendly, in my opinion. It used to offer a checklist of features, so that you could, for instance, look at all three-column themes which are blue and widget ready.

I can’t figure out a way to do that now. (If you have a good technique, please let me know!)

Step 4: Theme Customization

Once you’ve installed your theme, it’s time to make it your own.

Most WordPress themes look like blogs rather than static Websites.

Luckily, this is relatively easy to change.

Since my coding skills are not that advanced, I like to use plugins whenever possible.

(I wrote a post about using WordPress as a CMS, which offers more specifics about this step).

I often also customize the theme’s colors and the navigation’s look and feel. I also like to replace WordPress’ relatively weak search function with Google Custom Search. (This page produces code which will most likely go in your header).

This is a good time to start thinking about what kinds of content, and therefore what kinds of page templates, you will want on your new site.

For instance, the site on which I am now working, there are:

  • Index pages (which I refer to as Level II pages, though everyone seems to have their own nomenclature). I set these up so that new article (child) pages will automatically be added as they are published.
  • Article pages: All of these pages have a common setup, including a byline, a title, the article content and a copyright notice. Since I want these elements on all of the article pages, I added the text to the template. I then created specific styles for each element (i.e., the byline is 10 point Arial strong) in the style.css file.
  • Contact page: I make a separate template because I have a contact form in the right-hand column of all the other pages, but I don’t want it to show up on this page, because there’s already a form.
  • Glossary/FAQ page: These pages operate differently enough to warrant their own template. FAQs can be an excellent way to add search-engine friendly content to your site, so it’s important to have this page function in an SEO-compatible manner.

Some sites may require other template types (such as image galleries). The better you understand the information which will go on the site, the better you will be able to plan this phase.

Step 5: Plugins

I use plugins to add functionality to my sites which is beyond my ability to code.

For instance, this site uses a lot of AJAX, but I know barely any AJAX. It’s all in the plugins.

Here are some of my favorites, which I rely on for most projects:

  • Admin Management Xtended: This makes it easier to perform common tasks in the admin area, such as: toggling post/page visibility, changing publication date and title and even page order
  • All in One SEO Pack: This plugin is an easy way to make your pages and your site structure more search-engine friendly
  • AskApache Google 404: People who land on non-existent URLs are sent to a 404 page that uses Google search to find related pages and posts to the bad URL (i.e, going to http://www.nooozeguy.com/television sends the user to a page that lists pages containing the word television)
  • Breadcrumb Navigation XT: This plugin adds breadcrumbs to each page. Breadcrumbs are a user-friendly feature to help people navigate around your site
  • cforms: This is probably the best form plugin available for WordPress. It takes a bit of skill to customize though and updates need to be done manually, so they take some time
  • Dagon Design Sitemap Generator: I use this plugin to create a user-facing sitemap, which is helpful for both people and search engines. I also use this plugin to dynamically creates a list of pages and posts on my 404 page
  • Exclude Pages from Navigation: This plugin allows you to add pages without having them show up in your navbar. This is helpful for PPC landing pages
  • Google XML Sitemaps: This plugin generate a sitemaps.org compatible sitemap which is supported by the major search engines
  • Multi-level Navigation Plugin: I use this to make Suckerfish dropdown menus which can be changed in a GUI so that non-technical users can update the site navigation
  • One Click Plugin Updater: This plugin installs new plugins or themes easily
  • Permalink Redirect: Joost de Valk describes his plugin this way: “Redirects all crap away from the end of the URL.” Enough said. ;-)
  • Wordpress Automatic Upgrade: This allows a user to automatically upgrade to the latest WordPress version
  • WP-phpMyAdmin: Use this plugin to access the phpMyAdmin from the WordPress admin console

This is (obviously) not an inclusive list of plugins which can help you. Please let me know which plugins you like most.

Step 6: Content Migration

In most WordPress migrations I do, I transfer content throughout the process. This is doable because of the way that WordPress separates content from design. As you develop your design, the look of the content will evolve in unison.

It’s important that during this process you keep track of the existing URL and the new URL of each page. Before the new site goes live, you will want to 301 redirect all of the old URLs to their new addresses so that you don’t lose any search-engine value and to keep users from being sent to non-existent pages.

Step 7: Quality-Control Check

By this point, you’re close to being done. But before you push this site live, check to make sure you’ve done everything right. Here’s my checklist:

  • Tables: A number of the sites I have converted to WordPress used tables to display information. I try to build my sites in CSS as often as possible. I try to convert tables to DIVs unless it’s going to negatively affect the look of the page.
  • Links: I use Xenu to check the links on my site to make sure the internal links are correct. Many times, the original sites do not have search-friendly URL structures, so I choose not to use the same page names.
  • Browser compatibility: One of the downsides to using CSS is that some browsers (Internet Explorer in particular) do not render CSS uniformly. It’s important that your site looks good in all of the latest versions of IE, Firefox and Safari. It’s also a good idea to look at your analytics data to see what other browsers your visitors use.
  • Content: It may go without saying, but check each page once more to make sure you don’t have any typos or spelling errors, etc.

What steps would you add? Let me know!

Step 8: Redirecting the Site

Now it’s time to make your new site live.

Use the spreadsheet you made (you did make it, didn’t you?) in Step 6 to create 301 redirects using the Redirection plugin. The great thing about this plugin is that it spares you from having to edit the .htaccess file yourself.

Once that is done, you are ready to “point” your site to the new domain. Here is a good guide. These instructions are going to vary depending on your Web host, so I’m not going to go into detail in this post.

Step 9: Odds and Ends

Once you have successfully migrated your site, it’s a good idea to watch how the search engines index your old site and your new site.

The best way to do this is to have accounts with Google Webmaster Central and Yahoo Site Explorer. These sites will show you how each search engine “bot” is interacting with your site; what pages it has indexed, what problems it may have encountered and when the last time it visited your site.

I would like to have this guide grow and evolve as I develop more sites (and gain more insights). I would also like to invite you to offer your advice.

{ 7 comments… read them below or add one }

Steve Smith October 25, 2008 at 10:05 PM

That’a a great, really thorough tutorial. I’d add a couple of plugins to your list.

Lock out will allow you to keep search engines and anyone else out while you build your site (go to yoursite.com/wp-admin to log in while it’s locked).

Search Everything will improve the built in search, which in some cases would be better than using a Google site search. The last time I tried it there was a bug, where if you enable searching for tags or custom fields it stops working completely, but that might be fixed by now.

Josh Fialkoff October 25, 2008 at 10:23 PM

Thanks for the suggestion Steve.

I just checked out Search Everything, but it says it’s compatible up to WordPress version 2.6.1 and I have 2.6.3. Lock Out is good up to 2.5.

Hopefully they’ll get updated soon…

-Josh

Steve Smith October 25, 2008 at 11:32 PM

Anything that works with 2.6.1 will work with 2.6.3, and I’m using Lock Out with 2.6.3 without any problems :)

Ari Herzog October 26, 2008 at 2:59 PM

You mention a few administrative plugins and I wonder why. Are you hosting these sites on GoDaddy or elsewhere that lack a feature-rich cpanel?

Also, I question your desire, despite a lack of coding know-how, to use too many plugins. I’ve heard plugins cut down on site performance rather than built into the code.

Josh Fialkoff October 26, 2008 at 3:24 PM

Ari,

I am curious to find out what you think can be done better through cPanel that in WordPress. In my experience, the types of functions are quite different.

I prefer to access elements to both cPanel and WordPress plugins, such as the phpMyAdmin tools, from within WordPress out of convenience. It’s one less system I have to log in to, one less tab that I have to have open.

Plugins such as Admin Management Xtended perform functions which are completely separate from cPanel. Other plugins, such as Permalink Redirect, accomplish tasks which could be done through cPanel, but the latter method is more difficult and time consuming, in my view.

I used to use GoDaddy (which I completely despise now). Their tools are good for installing WordPress, but I did not find them helpful for administering existing installations. (They also have quite limited support for WordPress, so if something goes wrong while you are using their interface, you could be on your own).

My preference for using plugins rather than pure code is two fold.

First, plugins give me the ability to add functionality on my site which I would be hard pressed to code myself.

Second, plugins can so easily be deactivated that if I do see a reduction in performance, I can isolate the problem more quickly by deactivating plugins (one by one) than by parsing lots of code.

Thanks for your feedback!

-Josh

Darryl December 7, 2009 at 3:19 PM

Hi: Which “redirect plugin” are you using, to handle 301 redirects….which would you suggest using today, Dec 2009? Also, in your example, did you / your client abandon the original url? Why not take the fully developed site, and simply copy all of the files onto the original url?

Josh Fialkoff December 17, 2009 at 10:38 PM

Hi Darryl,

I would not recommend abandoning a domain. Old domains may be valuable from both the view of search engines, though there is some dispute about that (see for instance, http://www.searchenginejournal.com/domain-age-how-important-is-it-for-seo/7296/).
From a user’s perspective, if they have the old domain bookmarked and you abandon that domain, you’ve lost a potential client/fan/friend.
I use the Redirection plugin (http://wordpress.org/extend/plugins/redirection/) and I use it A LOT. I just checked and I have more than 55 redirects.
Many of these are pages that another Website has linked to incorrectly. (For instance, someone linked to “www.fialkoffconsulting.com/,” because of a coding mistake. If I didn’t redirect that to the home page, the user would get a 404 error and I would lose an inbound link (which helps with search engine presence).
Other times, I change the structure of my site. For instance, several months ago I moved the “Social Networks” category to the top-level navigation, rather than a subsection of “Online Marketing”. Doing that changed the URLs of each of the social networking pages. I used Redirection to fix that, so that anyone who bookmarked or linked to one of those pages ended up on the correct page.
Good questions!
-Josh

Leave a Comment

Previous post:

Next post:

Josh Fialkoff | 4 Brewer St. #1L Jamaica Plain, MA 02130 | 617-500-3450