NOTA: Algunas de la consultas SQL utilizadas a continuación están basadas en el proceso de migración detallado en esta página, aunque adaptadas para mi caso concreto y/o corregidas.
7.1. Abrir MySQL
7.2. Vaciar todos los comentarios y artículos de WordPress
TRUNCATE TABLE wp_comments;
TRUNCATE TABLE wp_postmeta;
TRUNCATE TABLE wp_posts;
TRUNCATE TABLE wp_term_relationships;
TRUNCATE TABLE wp_term_taxonomy;
TRUNCATE TABLE wp_terms;
7.3. Copiar todos los artículos de la antigua base de datos (drupal) a la nueva (wordpress):
INSERT INTO
wp_posts (id, post_date, post_date_gmt, post_content, post_title,
post_excerpt, post_name, post_type, post_modified, post_modified_gmt,
post_author)
SELECT DISTINCT
n.nid, FROM_UNIXTIME(created),
FROM_UNIXTIME(created-7200), body, n.title, teaser, LOWER(n.title),
(CASE n.type
WHEN 'story' THEN 'post'
WHEN 'blog' THEN 'post'
ELSE n.type
END) AS type,
FROM_UNIXTIME(changed) ,
FROM_UNIXTIME(changed-7200) ,
1
FROM drupal.node n, drupal.node_revisions r
WHERE n.vid = r.vid
7.4. Actualizar los enlaces permanentes para que sean iguales que los de Drupal:
UPDATE wp_posts, drupal.url_alias as d
SET post_name = TRIM(LEADING 'contenido/' FROM d.dst)
WHERE d.src LIKE 'node/%'
AND NOT d.src LIKE '%/feed'
AND wp_posts.Id=(TRIM(LEADING 'node/' FROM d.src))
7.4. Importar todos los comentarios:
INSERT INTO wp_comments (comment_post_ID, comment_date,
comment_content, comment_parent, comment_author,
comment_author_email, comment_author_url, comment_approved)
SELECT nid, FROM_UNIXTIME(timestamp), comment, thread,
name, mail, homepage,
(case STATUS WHEN 0 THEN 1 ELSE 0 END)
FROM drupal.comments
7.5. Actualizar conteo de comentarios en los posts
UPDATE wp_posts
SET comment_count = (SELECT COUNT(comment_post_id)
FROM wp_comments
WHERE wp_posts.id = wp_comments.comment_post_id);