Of course, like everyone else, I thought I would start a travel blog, make loads of money from it, and travel forever. That didn’t happen, but the blog does serve as a great diary for my trips. It’s nice for me to use it now to look back over the years, and I’m sure it will be even more important for me in the future.
WordPress is definitely the best CMS for this blog, as I want it to be very easy to use, easy to update, and easy to manage photos.
So here’s what I did.
1. Take full backups, as always
I took a full file and database backup of the live site. Although I wont be changing the live site, just eventually taking it offline, you can never fully anticipate what will happen, and so taking full backups as the first step is vital.
2. Researched current migration options
A year or two ago I found a script on GitHub that someone had created for migrating Drupal (6 or 7) content to WordPress. I thought this might be useful for me to migrate my sites and searched for it. Strangely I couldn’t find it, but the top results for migrating Drupal to WordPress was a number of plugins. Two to be precise: CMS2CMS and FG Drupal to WordPress. They both have premium options, which I would need to buy.
Af first I thought I would write my own migration code, as that’s an area where I am strong in experience, but then thought I would give these plugins a try, as it will save me a LOT of time, and not cost me that much.
I consider both of the plugins, and they’re pretty similar, but ended up going for FG Drupal to WordPress as it seemed to offer more features and options.
I create a new WordPress website locally, installed the free version of FG Drupal to WordPress and gave it a try. I copied the live Drupal website locally to reduce the import time.
The import went well, and I was impressed with the results. The plugin told me I needed the premium version as I had custom content types. Fine, it was only €50.
I bought it and re-ran the import. Everything imported really well, pages, posts and comments. There were a few other bits, such as a Story content type that was really just news, and so I converted those stories to Posts.
4. Problems found on the way
in Drupal a page (or post, or whatever) can have any URL, as long as its unique. In WordPress things are not so flexible.
Using the Custom Permalinks plugin it’s possible to have more flexibility, but there are still some constraints. I’m flexible on the URL structure, but once the campervanlife.com import is done I suspect there will be many broken links from the old site.
I plan to audit every page, revising the content and images, and also the URL if necessary.
The excellent Broken Link Checker plugin makes it really easy find and adjust broken links. I will also add 301 redirects to the .htaccess file. Then I can use the 404 to 301 plugin to monitor the inbound 404 links, and address any that have been missed.
I not set the Import summary option “to the content” and I was left with lots of <!–more–> tags and duplicate content in the posts pages. I only realised this after it was too late.
So I wrote a simple script that went through, compared the content before and after the <!–more–> tag, and removed the duplicate content.
There are lots of broken links in the site. Some because external websites disappear and their URLs change. Using the Broken Link Checker plugin I was able to find, amend or delete the pretty quickly. I can’t imagine a similar plugin/module for Drupal. If someone had made it for Drupal, it probably wouldn’t work for my version, would be abandoned, or just simply wouldn’t work as well as the WordPress version. That’s a major factor with the WordPress community: Pride. People car about what they are making enough to do a really good job.
The Broken Link Checker is also a great way of identifying spammy comment links and easily removing them.
There were a lot of broken images, for various reasons.
Images uploaded and inserted via the Drupal media library still have their reference to the Drupal URL path. So I simply upload all of the images using the old Drupal file structure: