Migrating from Blogger to WordPress

So I’ve got myself a shiny new blog design, and more than that it is running on both a shiny new hosting provider (Azure Web Sites) and a shiny new platform (WordPress). So this post is going to run through the reasoning behind why I moved, why I chose WordPress and (equally importantly) how I actually did it.

I can say that I am very pleased so far with the WordPress experience. It has been a relatively quick and painless experience and migrating all of my old content from Blogger.com to my new hosted WordPress site (including setting up the theme and a bunch of “widgets”) only took me a few hours (easily achievable in one evening). I am quite a fan of the interface although I admit the current style still requires a fair bit of polish here and there.

The main issues I’ve faced have been post formatting as the migration doesn’t appear to have brought over all of my images (although most of them appear to be intact). Also the formatting of code blocks appears to have stripped out what it obviously thought were harmful scripts (a lot of my JavaScript code samples have magically disappeared) so that will need some cleanup

So why WordPress? (and why not Orchard?)

I have to admit this was not my first choice of blogging platform and I took a long hard look (and many hours of Try > Fail) with the Orchard CMS platform. Similar to WordPress the Orchard platform is also open-source although it is built on .NET Framework 4.0 (more specifically MVC / Razor) while WordPress is built on PHP. Now I admit, I was initially drawn to Orchard for two reasons: 1) It is built on .NET (which I am extremely familiar with) .. 2) it is used by two well respected SharePoint gurus Andrew Connell and Wictor Wilén on their blogs, and they both said it was a great platform and I like the look of their blogs.

So .. I gave Orchard a damned good go. I setup a sample Orchard site, got the initial template and branding looking solid and generally speaking I was quite happy with it .. until I hit a brick wall which was trying to migrate my content over. The biggest problem with my old site being on Blogger was the only “export” tool uses a custom XML schema which isn’t compatible with most other platforms .. so now I was in the realm of relying on some third party Orchard plug-ins to do the job. To cut a long story short, it didn’t work out .. I could (just about) get my content into Orchard but the formatting was screwed, all of the publishing dates had disappeared and the categories and tags didn’t come through. I played about with about half a dozen Blogger to BlogML converters but none of them worked. In the end this was becoming too much hassle .. yes, I could have written my own code to convert the XML, the thing is I didn’t really want to and this was supposed to be “easy”, not a project!

So after that I jumped into the WordPress bandwagon. I’ve heard pretty much nothing but good things about WordPress and I know a massive number of blogs (both SharePoint and otherwise) are running on WordPress. Being one of the most popular blogging platforms it also has a tonne of free plug-ins for enhancing the site (a number of which I’m using, I’ll list them below).

Setting up the site was very easy (WordPress, like Orchard CMS, is in the Azure Web Sites Gallery, so you just pick it from a list and all of the setup and configuration is done for you in minutes!).

Migrating content from Blogger to WordPress

Getting the content over was mostly painless, but there were a few hoops to jump through first.

The built-in Blogger Importer plugin did most of the heavy lifting and copied over all of my posts, comments and their tags (which it converted to WordPress “categories” for some reason) and publish dates. That took about 5 minutes to complete followed by the “Categories to Tags” converter which made sure each post was using “tags” correctly.

So 5 minutes into the migration process things were looking pretty good .. however the formatting did a few things which went a bit screwy.

Problem #1 … the Blogger Importer pulled down all of my content but unfortunately either it (or WordPress) “cleaned” my HTML … this annoying stripped out a whole load of HTML and JavaScript code samples. The only option I really have is to go back to each of those posts and re-add the content. I suppose the bonus of this is it gives me the opportunity to re-format my old blog posts so they all look neat.

I then used another module Blogger Image Import which took another 5 minutes or so and downloaded all images in my blog which were hosted on blogger.com or blogspot.com (the URLs used by the Blogger hosting platform) and imported them either into my media library or as post “attachments”.

Problem #2

… the Blogger Image Importer seemed to work with 90% of my images but for some reason some of them didn’t come over. I now have to go through and give a visual check to each blog post, re-adding any missing images

That was pretty much it. About 15 minutes after my WordPress site was created and (almost) all of my blog content had been imported.

I probably have several hours of visual checking and updating to get the odd missing image or code samples working correctly, but it was light-years easier than the Orchard process was.

Post Permalinks (friendly URLs that match my old blog)

This was actually a step that I initially forgot to do. When you initially install WordPress it uses the relative URL /?p={PostId} to identify your post. For example:

https://www.martinhatch.com/?p=6201

This is bad on two counts:

  • Search indexing (i.e. Bing | Google | etc) will down-rank my pages due to have non-friendly URLs
  • All of inter-post links and any links from existing search indexes are pointing to my old Blogger format

The format that I was using on blogger was in the psuedo-format /{Year}/{Month}/{PostName}.html. Luckily I can configure WordPress to use an almost identical format:

/%year%/%monthnum%/%postname%.html

https://www.martinhatch.com/2013/09/im-speaking-at-sharepoint-saturday-uk-2013.html

WordPress already had an almost identical format as one of the options, but I needed to keep the “.html” on the end because that is what my old blog was using (otherwise I’d have dropped it).

Post-Migration clean-up

So as I’ve already mentioned above there was a bunch of things I needed to clean-up in order to get my blog ship-shape.

All told I expect this to take around 4-6 hours to complete (for just over 180 blog posts) .. I am only part-way through this process so please bear with me while I get it all cleared up

  • double-check all my images are working. Where necessary edit any posts with broken images and re-upload the image to WordPress
  • double-check all post formatting, paying special attention to code samples.
  • Add “Split-Post” formatting to recent posts

This third one (split-post) is a small snippet of HTML (<!–more–>) which adds a “read more” button on any summary pages (such as the home page). Without this you end up with the entire post content in a single massive page (some of my recent blog posts were very long, so this was quite a problem).

Next Up .. “Themes” and “Widgets”

So .. the next thing any self respecting blog needs is a visual theme. I wanted something clean, flat and colourful (thinking Windows 8). My business colours are Orange (also a personal favourite) so I used the free zeeVision theme with the Orange theme option turned on. I applied a tiny bit of custom CSS (some basic formatting of bullets and the footer) but otherwise it is (currently) completely out of the box.

I am probably going to spend an increasing amount of time on the branding side over the coming weeks. I am not entirely happy with the header (too boring) and mobile view in particular looks a bit squashed (too much padding, and I think the main container could do with a “min-width” attribute) but to be honest it is a pretty damned good starting point.

“Widgets” are basically SharePoint Web Parts for WordPress and pretty much everything down the right-hand side of the page is a “widget” (the images, links, blog archive, tag cloud, etc). I didn’t really like all of the standard widgets so I did install some new plug-ins to give me some better functionality (such as the collapsing and expanding blog archive).

Installing and Migrating Comments to Disqus

The next thing I wanted to take care of was the commenting system. I have seen a number of blogs using the Disqus model and I quite like it, and there is a free to use Disqus plugin for WordPress (which automatically replaces the standard commenting system). You will need a Disqus account to use this plugin, but it is free to register.

The key features this brings is the ability for people to comment using different, quite common, accounts:

  • Disqus (with link to register)
  • Facebook
  • Twitter
  • Google+

There are also options for automatically synchronising all of your WordPress comments from the settings page (if you don’t do this, you lose all of your comments when you switch over from native WordPress comments to Disqus).

Import and Export from WordPress to Disqus

Once I completed this (and waited for 5 minutes or so) then all my comments appeared in Disqus so happy days 🙂

Social Sharing

The final thing I felt I needed was some quick links which make it easier for people to share my blog posts on their social platform of choice. Again this is the great thing about the WordPress platform that there are so many great plugins to choose from.

I ended up picking Shareaholic as I had seen it in use on some other sites and I really like the look of it (you should be able to see it in action at the bottom of this post).

image

This not only gives people the ability to tweet / like / share / link to my blog posts, but also keeps track of how many tweets / likes it has had and shows that in the summary (or at least it should do!)

WordPress Plugins I am using

So that is pretty much it, I thought I’d finish out by listing what plugins I’m using (and why)

  • All in one Favicon – Easy method for putting my browser icon on the page
  • Blogger Importer – Used to import my posts and comments from Blogger
  • Blogger Image Import – Pulled (most of) my images from my old blog and uploaded them to my WordPress site
  • Categories to Tags Converter Importer – Converted my post “categories” to “tags” after the import had finished
  • jQuery Archive List Widget – Improved “blog archive” widget in the sidebar with expand and collapse for year and month
  • Disqus Comment System – Replace comments with the Disqus system
  • Google Analytics for WordPress – Easy way of getting your Google Analytics tracking code on every page
  • Google XML Sitemaps – Generates an XML sitemaps file for more effective search indexing
  • Shareaholic – Configurable plugin for adding social media links to the bottom of every post
  • Responsive Lightbox – Configurable plugin for adding lightbox pop-up effects for images and videos in posts
  • Dan Antion

    Thanks for writing this (and thanks to @sympmarc for pointing me to it). I am migrating my blog from Blogger to WordPress today, and this post has been very helpful.

  • Martin Hatch

    You’re most welcome 🙂 Glad you found it useful

  • timosch

    Hi! this is one of the most comprehensible and useful posts on the topic of blogger to wp migration I ever saw ( and I saw a lot since I did my research before the migration). I started out like you did with Blogger importer, but the html thing pissed me off, and I gave up. Instead, I found CMS2CMS tool that actually did the transfer, and all of my content, pics, comments and even youtube embeds went nicely over. The best part was it was incredibly quickly – about half an hour total, and the worst thing was it is for money ( but this was the best $48 I ever spent). The only thing I had problems with was redirects – I didn’t realize I could set similar URL structure on WP, so after the move I used Redirection to fix things.

    If anyone needs it, here’s the link to the tool I used: http://www.cms2cms.com/supported-cms/blogger-com-to-wordpress-migration

  • Appreciate your formulating an exceptionally decent article, It happened to see your website page as well as several written piece.Great informative post and i really likes your information.