Wednesday, July 17, 2013

Migrating From WordPress to Blogger: How & Why

As time has gone by the costs of maintaining a privately hosted WordPress blog has increased.  My hosting costs have doubled over the last two years and free services such as WhoIs Protection and email accounts have become paid add-ons.

There are also security concerns. WordPress is a software platform and there are currently over 68 million installations in the world.  This is a tempting target for attackers and numerous exploits exist in the wild.  Alternatively, Blogger is a service and there is no option to host a Blogger instance with a third party. This alleviates the user from the burden of maintaining both the software and the myriad of plug-ins currently available.

As this site is more or less a hobby, I've decided to transfer my domain to a different registrar and I'm abandoning WordPress in favor of Blogger. This eliminates the need for a separate hosting provider yet still allows me keep a custom domain (no aditional fee).

Below are the steps I took to migrate from WordPress to Blogger:


Content Migration

Migrating the blog posts, stand alone pages and user comments was not that difficult.  Both WordPress and Blogger offer simple import/export functions and it is just a matter of converting the data to the appropriate format.

The procedure for exporting data from WordPress has changed over time. As of this blog post, the latest version is 3.5.2.  From within the management console, hover over "Tools" and select "Export".  You will then be prompted to "Choose what to export".  The options are: All Content, Posts, Pages, Feedback. In my case I wanted to export everything. After making a selection, just click "Download Export File".  The format will be an Extensible Markup Language (.XML) file.

Blogger also uses .XML files to import/export content however, the formatting is not correct to directly upload a blog from one platform to the other. Fortunately, there are a number of tools that will convert it for you.  Not wanting to install any software, I opted for a web app (http://wordpress2blogger.appspot.com/).  This site is easy to use. Just click "Choose File", navigate to the .XML file you exported from WordPress and click "Convert". The converted .XML will automatically download within a few minutes.

Uploading the converted .XML file to Blogger is just as easy as exporting it from WordPress.  Once you have created a new blog in which to import your data click "Settings" and then "Other".  At the top of the page under Blog Tools click "Import Blog".  You will be presented with an import pop-up window. Click "Choose File" and select the converted .XML file.  To "prove you're not a robot" you are asked to complete a CAPTCHA.  Once you've typed in the response click "Import Blog".

TL;DR Version:

  1. Log in to the WordPress management console
  2. Select "Tools" à "Export"
  3. Select "All Content"
  4. Click "Download Export File"
  5. Go to http://wordpress2blogger.appspot.com/
  6. Click "Choose File"
  7. Select the .XML file you want converted
  8. Click  "Convert"
  9. Create a blog on Blogger
  10. Click "Settings" à "Other" à "Import"
  11. Click "Choose File"
  12. Select the converted .XML file you want to upload
  13. Complete the CAPTCHA
  14. Click "Import Blog"

Templates

Blogger offers a number of different templates that are highly customizable.  It is relatively easy to change the: layout, color, banner, favicon, etc.  Wanting to be somewhat unique, I putzed around a number of sites looking for a 3rd party template. I ended up deciding on a template from PBTemplates.  I also recommend checking out BTemplates which offers hundreds of different options.  Once you've made your selection, it's simple to upload the template (you just need the .XML file).  Log into the Blogger console, select "Template" and click the "Backup/Restore" button. In the pop-up window click "Choose File", select the .XML template, click "Upload" and you're done.

TL;DR Version:

  1. Log into the Blogger console
  2. Select "Template"
  3. Click "Backup/Restore"
  4. Click "Choose File"
  5. Select the .XML template
  6. Click "Upload"

Issues

Formatting:  Depending on the template you used with WordPress and the template selected for Blogger you may find there are some formatting issues.  In my case I needed to add or remove spaces between paragraphs, delete gibberish left over from the conversion process (minor effort) and remove some left over HTML formatting from the old color scheme.  Not every post had issues and none of it was egregious.  If you are importing a large number of posts and not overly picky then it probably won't bother you.

Images:  Previously most of my images were left aligned with the text squared around it. After importing the blog the images defaulted to "inline" with text.  This was easy enough to fix by entering the edit screen for the blog post, clicking on the image to display properties and clicking the "Left" property.
Warning: If your images are hosted with the same provider as your WordPress blog they will be lost when you inevitably cancel your service or let it expire. If this is the case you will have to download and re-add them to your blog posts on Blogger.
Tip: Images uploaded to Blogger are housed in Picasa (picasa.google.com).  These images are also accessible under the Photos tab in Google Plus.  
Gadgets/Widgets:  You may likely find that there is an issue with some of your "Gadgets" (what WordPress calls "Widgets"). I tested out a number of different templates and found that the issues varied.  I was able to successfully edit some of them by tweaking the HTML, but in most cases it was easier to just delete and re-add them. You can access Blogger Gadgets under the "Layout" menu.

Time Format:  Lastly, many of the templates I looked at are formatted to only display the time of the post (no day, month or year).  I was able to change this by going into the "Template" menu and clicking "Edit HTML".  Once there, search for the string, "data:post." and look for an instance that is proceeded by a time variable.  Change this variable to "dateHeader".
Example: Change <data:post.timestamp/> to <data:post.dateHeader/>

All in all, the process is relatively painless.  Feel free to drop me a line if you run into any issues.



Screenshot of SecurityRamblings.com prior to migrating from WordPress to Blogger
[Click to Enlarge]