Migrating a Website into WordPress is a project that can be a lot more difficult and involved than it looks. Below is a blog post first written in 2008, when I was quite early in the process of learning about WordPress.
These are the steps we follow in 2017 to migrate sites into WordPress:
- Inventory the current site
- Before making any changes, it’s crucial to know the extent of the existing site’s footprint, especially on Google. It’s important to know if any pages generated by a CMS or other tools used in the existing Website.
- Next, export the site’s existing content that will be needed on the new site into Excel, a CSV or a MySQL database. If the site does not use a CMS, use a tool to crawl and extract the content you want on the new site. This can be difficult with older, poorly developed sites.
- Install WordPress & Genesis on a staging site
- We recommend using the Genesis framework for nearly all clients. We install WordPress on our Liquid Web WordPress-optimized virtual private server (VPS) and add the Genesis framework.
- Building the site on a staging server generally on a subdomain, such as staging.[domain].com.
- Add or create Genesis child theme
- Import content from existing site
- Once the site’s content is in a spreadsheet, import the content. You can do this directly through PHPmyAdmin, or search for a plugin to do this.
Here is the initial post:
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.