Sanford Dickert, Social Engineer

General thoughts on being involved in the intersection of business and science, technology and marketing, private industry and public service (and occasional opinions on movies and other entertainments)

Monday, September 8

Migrating from MT 4 to WP 2.5+

On Sunday, I spent a good deal of time migrating a blog from Movable Type 4.X to WordPress 2.5+ and found myself pulling my hair out to allow for a safe migration.  

One of the issues that you always discover in any migration is that Wordpress and Movable Type do not maintain the same permalinks.  As a owner of a blog, you want to keep your old URLs (permalinks) consistent, since google (and other search engines) and links to your site are all based on the permalinks URLs.

After a number of hours, I figured out some of the ways of retaining the original permalinks from MT and allowing for it to be consistent in Wordpress.

Step 1: Modify WordPress Import mt.php file
In the /wp-admin/import directory, you will see a file called mt.php.  Open it up in your favorite editor and go to around line 330.  There you will see:

} else if ( 0 === strpos($line, "TITLE:") ) {
$title = trim( substr($line, strlen("TITLE:")) );
if ( '' == $context )
$post->post_title = $title;
else if ( 'ping' == $context )
$ping->title = $title;
 
Here, you will copy this collection of code and then paste the same content below this collection (essentially offering a duplicate of the TITLE option).  Then, you need to change:
  • TITLE to be BASENAME
  • $post->post_title to be $post->post_name
  • $title to be $>postname
It turns out the MovableType gives you the name of the Permalink in the BASENAME variable and you can change the WordPress post name (or post-slug) in this manner.  You then get:

} else if ( 0 === strpos($line, "TITLE:") ) {
$title = trim( substr($line, strlen("TITLE:")) );
if ( '' == $context )
$post->post_title = $title;
else if ( 'ping' == $context )
$ping->title = $title;
} else if ( 0 === strpos($line, "BASENAME:") ) {
$postname = trim( substr($line, strlen("BASENAME:")) );
if ( '' == $context )
$post->post_name = $postname;
else if ( 'ping' == $context )
$ping->post_name = $postname;

After you make this change, save the file.

Step 2: Export your MovableType blog
In MT, you can export your data in the MT format by going to the following URL:

http://[YOUR WEBSITE DOMAIN HERE]/mt.cgi?__mode=start_export&blog_id=1

Save the file as a text file (blogname.txt).

Step 3: Import to your WordPress 2.5+ 
Once you save the file as a text file (blogname.txt), you then go to the Import functionality of your WordPress installation.  This is found at:

http://[YOUR TEMP DOMAIN HERE]/wp-admin/import.php

Once you go through the process of Importing the blogname.txt file, you will have the new site updated with the correct URLs/permalinks.  All of the slugs are also updated.

Hope this gets included in the next WP installation.

Labels: , , , ,

0 Comments:

Post a Comment

<< Home