Migrating to WordPress

male travel blogger taking photos on a DSLR camera on a tripod with cliffs and ocean behind him

Changing blogging platforms is a big decision, and not one to take lightly. Our publisher Laurence Norah of Finding the Universe made the switch from Blogger to WordPress earlier this year, and offered to share his experience with us.

Laurence and Jessica Norah

Laurence and Jessica Norah

Laurence has already shared with us how he chose a blogging platform and selected a hosting company. We’re so happy to have him here with us once more to share the final phase of his migration story.

From choosing a theme to migrating content and launching your site on the new platform, there’s a lot to consider. The Mediavine Support Engineers added a few suggestions of their own to consider if you are using Mediavine ads.

Take it away, Laurence!

Set up a WordPress staging environment

Laurence: The first thing you need to do is set up some kind of WordPress staging environment. This will be where you set up your new blog, learn how WordPress works, copy all your posts across and basically make sure everything looks good before you go live.

You’ll want to make sure this site is password protected and not indexable by search engines, so no one can access it before you are ready.

Mediavine Support Engineers: Many WordPress-optimized hosts provide a staging environment of your site at no additional cost. Some hosts make it as easy as a single button click to push any changes from the staging copy to the live site once you are happy with it. Any fully-managed host should also be able to work with you create a staging or development server to use.

A man types at a desktop computer.

Pick a theme and install it

Laurence: The next step is to decide what you want your site to look like. You can try and pick a theme that looks similar to your old Blogger site, or start over. Personally, I opted to start over, just keeping my site logo for continuity.

If design isn’t your thing, hiring a web designer to help you out might be a good idea. There are a great many themes available. I can definitely recommend the StudioPress themes – they’re fast and well optimized for SEO, and they also receive regular updates. They are also relatively easy to customize.

Once you’ve picked a theme, install it, and make any tweaks you like. You will likely find it easier to work with your theme after you’ve imported some blog posts, so you have an idea of what they look like.

Mediavine Support Engineers: When selecting a theme, there are a few things to keep in mind to ensure it will work well with your Mediavine ads. Don’t miss our post on Choosing an Ad-Friendly Theme that discusses many things to keep in mind when redesigning your site.

Themes that utilize post builders also do not typically monetize well with Mediavine ads. For your reference, here is a list of post builders to keep your eye out for:

  • Thrive Architect
  • WPBakery (Visual Composer)
  • Beaver Builder
  • Fusion Builder
  • Divi Builder
  • Elementor
  • Upfront

Export your Blogger posts

You need to get your content out of Blogger, and the easiest way to do that is to use the built-in tool in Blogger to export your posts. This will export your blog posts and comments, allowing you to import them into WordPress.

To export your Blogger blog, go to your Blogger dashboard. Go to Settings, Other, and choose the “Back Up Content” tool. This will save your blog posts and comments (if you use the built-in Blogger commenting tool) to an XML file that you can then import into WordPress.

Mediavine Support Engineers: One thing we’ve experienced at Mediavine is that the export process brings with it some HTML output of Blogger posts isn’t always the best for ad optimization. Once you’ve exported your posts and imported them into WordPress, you’ll want to look through the HTML (or have a seasoned tech person do it) for <div> tags. These can block ads from working correctly. If ad optimization is a goal, working to remove these from your content over time will be important. If you need help, check out our help guide on <div> codes and Mediavine ads.

Change WordPress upload size

Laurence: Before you can upload your Blogger posts, you need to adjust the WordPress upload size. The default upload size of files in WordPress is quite small, under 2MB in fact. When you come to import your Blogger blog, the file Blogger generates will likely be larger than 2MB. In my case, around 700 blog posts and associated comments came to more like 15MB.

Depending on your host, you might be able to change the upload size yourself, or you might need to contact your host to have them do it for you. To do it yourself, you need to FTP into your server, locate the PHP.ini, and adjust the “upload_max_filesize” to a number that is larger than your Blogger file size.

Mediavine Support Engineers: Many hosts may not allow access to the files necessary to update the maximum file upload size. In this case, or if you do not feel confident editing server configuration files, most WordPress-optimized or fully managed hosts would be happy to take care of this step for you.

hands typing on a laptop with code on a black screen

Choose Permalink Structure

Laurence: Before you import your blog posts, you’re going to want to pick a permalink structure for your new blog. In WordPress, go to Settings -> Permalinks from your admin dashboard.

Blogger URLs by default look like this: 

yourblogname.com/year/month/post-name.html

WordPress has a number of permalink options with the default being this:

yourblogname.com/?p=123

Obviously the goal is to have your WordPress permalinks be as similar to your Blogger permalinks as possible. Personally, I took this opportunity to remove the dates from my permalinks (something that wasn’t possible with Blogger), which meant I had to put redirection rules in place to handle the change in structure. More on redirects further down this post.

However, you can also pick one of the other options. The easiest option, and the one I would recommend to minimize headaches, is to mimic the Blogger URL.

To do so, select Custom Structure, and put in:

“/%year%/%monthnum%/%postname%.html”

In my experience, the Blogger import plugin did not copy across all my permalinks correctly. The URL’s it generated for the posts were slightly different, based on post title. My solution was to update the Blogger import plugin to correctly set the new WordPress “slug” based on the Blogger URL. Another option would be to take a copy of all your URL’s, and manually update them yourself, so you don’t have any broken links.

Mediavine Support Engineers: Sitewide redirects aren’t ideal from an SEO perspective. Depending on the speed of your host, processing redirects can impact page speed load times, which can affect your rankings. You’ll have to weigh carefully whether changing the URL structure is worth the potential loss. If you plan on republishing often, however, removing dates from URLs may be the best way forward.

Hands typing on a laptop computer.

Install the Blogger to WordPress plugin

Now that you have WordPress configured to accept your file, and your permalink structure set up, it’s time to import your blog posts. From the WordPress dashboard, go to Tools -> Import. A number of services will be shown, with Blogger being one of them. Install the Blogger Import plugin.

Depending on how lucky you are, this will either work, or it won’t. Once you have installed the import tool you will be given the option to run it. Run it, choose the file you exported from Blogger, and press upload and import.

Because of the file size, WordPress still refused to import my Blogger XML as it was too big for it to handle. So I had to manually split the file up into smaller XML files, and import them separately.

Once you have done this, all your posts should be in WordPress.

Theoretically, the plugin will also import all your images into your media library. However, in my experience, this did not happen. My workaround was to use a dedicated plugin, described in the next step.

Mediavine Support Engineers: This article contains a much more detailed explanation of the issue and instructions on how to properly break the XML file exported from Blogger into multiple sections. If you select a fully-managed host for your WordPress site, they will be able to work with you to adjust the server configuration settings to increase the server time limit for the import process. They may also be able to assist in breaking the file into smaller pieces as they will be familiar with proper XML and HTML formatting.

Install Cache Images plugin

If for some reason your images didn’t import to your WordPress media library during the import above, don’t worry, there is a plugin to help. It’s called Cache Images

Once installed, use the plugin to scan your posts. Once it is done it will show you a list of domains it can cache images from. You’ll want to let it import images for all the Google image domains, which will look like “.googleusercontent.com” or “.blogspot.com.”

Once done, all the images that were previously hosted on Google’s servers are now hosted on your server, giving you full control over them.

Mediavine Support Engineers: We would recommend a plugin that is intended for this particular functionality instead of one intended for caching. The Import External Images plugin has not been updated for 4 years, but recent reviews indicate it is still fully-functional with recent WordPress versions. The drawback with this plugin is that it is limited to processing 50 posts at a time to avoid issues with server timeout, so you may need to run it a few times to import all of your images.

A laptop screen displaying code.

Set up redirects for new post structure, new page structure, and ?m=1 tag

So now in theory you have all your blog posts in WordPress with the correct URL’s and images.

We’re nearly there.

Now you need to set up some redirects. There are a number of ways you can do this. The best option is to handle this at the server level, and this will depend on your hosting environment.

Many WordPress hosts run on the Apache server system, which means you can FTP into your server and create rewrite rules in your .htaccess file.

If you host is running NGINX instead of Apache, there won’t be an .htaccess file. Server side redirects are possible, you will just need to talk to your host about implementing them.

Alternatively, you can use a plugin to handle your redirects. I’d advise against doing this for site-wide redirections as it places unnecessary load on your system – doing things at the server level is preferred as it avoids WordPress altogether. For one-off single page redirects, it can be easier to use a plugin, and I recommend the Redirection plugin.

Whatever your solution, you will need to implement redirects for the following:

Permalink structure

First, if you change your permalink structure from the blogger standard to one without dates, for example:

FROM: yourblogname.com/year/month/post-name.html

TO: yourblogname.com/post-name/

This redirect rule in your .htaccess would work:

RedirectMatch 301 ^/([0-9]{4})/([0-9]{2})/([^/]+).html$ http://yourblogname.com/$3/

Mobile pages

Blogger also uses a special url modifier for mobile visitors, whereby it appends “?m=1” to mobile versions of your site. These URL’s are treated separately by Google search, and you need to redirect these as well.

You can redirect these with a redirect rule as follows in the .htaccess file:

RewriteCond %{QUERY_STRING} ^m=1$

RewriteRule ^(.*)$ /$1? [R=301,L]

Pages

Pages in Blogger also have a different URL structure to those in WordPress.

  • In Blogger, pages look like: http://yourblogname.com/p/page-name.html
  • In WordPress, pages are: http://yourblogname.com/page-name/

So a rewrite rule for that in .htaccess would look like:

RedirectMatch 301 ^/p/(.+).html http://yourblogname.com/$1/

Post labels

Last, but not least, Google has a system of post labels. Post label URLs look like:

http://yourblogname.com/search/label/LABELNAME

WordPress uses categories and tags instead of labels. My suggestion is to redirect Blogger labels to categories as a starting point.  So the above URL would become:

http://yourblogname.com/category/LABELNAME/

You can do this with the following rewrite rule:

RewriteRule ^search/label/(.*)$ category/$1/ [L,R=301]

Finalizing the redirects

Your .htaccess file would now look as follows:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} ^m=1$
RewriteRule ^(.*)$ /$1? [R=301]
RewriteRule ^search/label/(.*)$ category/$1/ [L,R=301]
RedirectMatch 301 ^/([0-9]{4})/([0-9]{2})/([^/]+).html$ https://yourblogname.com/$3/
RedirectMatch 301 ^/p/(.+).html http://ftu.iampshipyard.com/$1/
</IfModule>

It’s important that this section of code is outside of the # BEGIN WordPress and #END WordPress tags, as otherwise they might get overwritten by other plugins.

Mediavine Support Engineers: If you are not an experienced web developer or tech guru, it is probably best to work with your developer or managed host to accomplish this section and ensure it is completed correctly. Modifying server configuration or .htaccess files can be complex and if not done correctly can cause a security risk for your site.

A woman blogging on a laptop computer.

Sort out your categories and tags

As mentioned above, Blogger uses labels to help you categorize your posts, whilst WordPress uses a system of categories and tags.

When you import your posts, all your labels will be converted to categories. Depending on your site structure, this might not be quite how you want it to be, so you might want to spend a bit of time going through your categories and figuring out which you want to be categories and which would be better suited to tags.

As an idea of the difference, if you think of a book, categories would be the headings at the beginning, whereas the tags are the reference index at the back. On my site, which is travel related, I have things like countries as categories, and things like “road trips” as tags.

Mediavine Support Engineers: Since your new category and tag archive URLs will not likely match the old label archives, it may be necessary to implement redirects to prevent any broken links. For example, if the URL to see all of your Instant Pot recipes in Blogger was https://www.yourdomain.com/instant-pot-recipes it may now be https://www.yourdomain.com/category/instant-pot. To prevent your visitors from seeing 404 pages, you may want to implement a redirect from the old URL to the new one.

Final Steps

If you’re gotten this far, you’re doing pretty well, and you’re nearly ready to go live! Before you do though, there are a few things to note. Thus far, we have successfully migrated the following:

  • Posts
  • Comments (if your site uses the Blogger commenting system)
  • Images

Unfortunately, there are a few things that won’t have migrated because they aren’t included in the Blogger export.

Pages are one thing that won’t currently migrate. You will have to manually copy across the content of your blog pages to WordPress.

Another thing that won’t migrate is the individual post meta descriptions. These are pretty essential, and it is rather frustrating that they don’t export. You will have to manually copy these across, post by post.

I found a way to speed this process up a little. First, you will need a list of all the URL’s on your Blogger site. One way to get these is to go to the Google Webmaster tools console, look at search analytics for your site, and download (at the bottom of the screen) all the page URL’s. If you put them into an Excel spreadsheet, you can then prepend your blog URL to the permalinks.

You can then use a tool like Analyse Meta Form to show you all the descriptions in one place. 

In WordPress, the Yoast plugin has a bulk editor tool that lets you batch edit the Yoast SEO title from one place without having to go into each post individually. Yes, it will still take a bit of time to manually copy and paste all these descriptions across, but it was the fastest option I could find unfortunately.

A top-down view of hands typing on a keyboard.

You’re Migrated!

You are essentially done now, all you need to do is spend a while clicking around your posts to make sure all the URLs redirect properly and nothing is broken. You now need to move your site live onto your production environment and set up the DNS name servers to point to your host.

Once you are done, if you have updated your permalink structure it is worth submitting your sitemap to the Google Search Console to help with reindexing.

And that is it!

Mediavine Support Engineers: Once your new WordPress site is live, your Mediavine ads will need to be replaced in the correct positions. Please email publishers@mediavine.com as soon as the site is live so we can make the necessary adjustments on our end.

When your ads are back up and running, it is extremely important to check your top 10-20 posts for in-content ad placements. Blogger’s post editor uses legacy code that tends to wrap large sections of content in <div> elements that prevent ads from loading correctly. If you notice in-content ads are not loading correctly, it may be necessary to edit the posts to remove any excess <div> elements from the HTML. If you are unsure, please feel free to let us know; we are always happy to take a look and provide guidance to ensure optimal ad performance.

Laurence, thanks so much for joining us and sharing your experience with migrating to WordPress. You can find his site at Finding the Universe and don’t miss our interview with Laurence from earlier this year.

Related Posts