Saturday, 1 November 2008

Bye bye Drupal. Hello Wordpress!

As you can probably see, I have moved this site from Drupal to Wordpress.


Why? 


The themes are nicer, the modules are better and it seems to be a much more professional project overall.


I've run a basic conversion script over the database for now and, as a consequence, there will be a whole lot of clean-up required. 


Being new to Wordpress means that this might take a little time.


I'm going to use Flickr for photo management and have the Flickr module installed, but I will obviously need to get all my photos online before they'll be available.


I also hope to blog more from the iPhone - and Wordpress should make that easier.


Oh, and here's that script:



# Taken from, http://mcdevzone.com/files/drupal_to_wordpress.sql

# this assumes that both wordpress and drupal are in separate databases.
# The wordpress database is called "wordpress" and the Drupal database
# is called "drupalmigration"

# based on scripts from:
# http://www.darcynorman.net/2007/05/15/how-to-migrate-from-drupal-5-to-wordpress-2
# http://spindrop.us/2006/05/19/migrating-from-drupal-47-to-wordpress
# http://www.brendanloy.com/2007/02/wordpress-21-upgrade-problems.html

# first, nuke previous content in wordpress database
use wordpress;
delete from wp_terms;
delete from wp_term_taxonomy;
delete from wp_term_relationships;
delete from wp_posts;
delete from wp_postmeta;
delete from wp_comments;

# categories
INSERT INTO wp_terms (term_id, name, slug) SELECT term_data.tid, name, name FROM drupalmigration.term_data where term_data.vid = 2;

INSERT INTO wp_term_taxonomy (term_taxonomy_id, term_id, parent) select term_data.tid, term_data.tid, parent from drupalmigration.term_data, drupalmigration.term_hierarchy where (term_data.tid = term_hierarchy.tid) AND (term_data.vid=2);

# posts
INSERT INTO wp_posts (id, post_date, post_content, post_title, post_excerpt, post_name, post_modified, post_author) SELECT DISTINCT n.nid, FROM_UNIXTIME(created), body, n.title, teaser, REPLACE(REPLACE(REPLACE(REPLACE(LOWER(n.title),' ', '_'),'.', '_'),',', '_'),'+', '_'), FROM_UNIXTIME(changed),n.uid FROM drupalmigration.node n, drupalmigration.node_revisions r WHERE n.vid = r.vid;

# category --> post relationships
INSERT INTO wp_term_relationships (object_id,term_taxonomy_id) SELECT nid,tid FROM drupalmigration.term_node ;
UPDATE wp_term_taxonomy SET taxonomy='category';

# category count updating
UPDATE wp_term_taxonomy SET count = (SELECT COUNT(object_id) FROM wp_term_relationships WHERE wp_term_taxonomy.term_id = wp_term_relationships.term_taxonomy_id);

# comments
INSERT INTO wp_comments (comment_post_ID, comment_date, comment_content, comment_parent, comment_author, comment_author_email, comment_author_url) SELECT nid FROM_UNIXTIME(timestamp), comment, thread, name, mail, homepage FROM drupalmigration.comments;

# users
INSERT INTO wp_users (ID, user_login, user_pass, user_nicename, user_email, user_registered, display_name) SELECT uid, name, pass, name, mail, FROM_UNIXTIME(created), name FROM drupalmigration.users WHERE uid>1;

# update comments count on wp_posts table
UPDATE wp_posts SET comment_count = (SELECT COUNT(comment_post_id) FROM wp_comments WHERE wp_posts.id = wp_comments.comment_post_id);

# fix post slugs. first we have to remove the duplicate _____ chars, then replace that with a single - char
UPDATE wp_posts set post_name = REPLACE(post_name, '__', '_');
UPDATE wp_posts set post_name = REPLACE(post_name, '__', '_');
UPDATE wp_posts set post_name = REPLACE(post_name, '__', '_');
UPDATE wp_posts set post_name = REPLACE(post_name, '__', '_');
UPDATE wp_posts set post_name = REPLACE(post_name, '_', '-');