Migrando de Drupal 6 a WordPress 2.9
He estado probando WordPress en local y he visto que es muy sencillo e intuitivo de administrar y como con drupal estaba teniendo algunos problemillas con los plugins he decidido migrar el blog a WordPress a ver que tal.
La clave para migrar la base de datos la he sacado de aquí, recomiendo leerlo entero porque está muy bien explicado y dice que cambios hay que hacer para particularizar la migración. En mi caso he tenido que hacer nada mas que un par de modificaciones para que me funcionara. Básicamente con lo que hay que ir con ojo es con el nombre de la base de datos. El resto casi todo es válido.
El proceso es bastante sencillo:
- Backup de la base de datos de Drupal
- Backup de los archivos
- Lo instalamos en local
- Instalamos (en local también) el WordPress en la misma base de datos de Drupal
- Aplicamos los scripts de migración.
- Si todo funciona ya lo podemos subir todo al servidor.
Los scripts que yo he usado, teniendo en cuenta que he llamado a la base de datos “tempdb” y los prefijos de WordPress y Drupal eran “wp_”y “drup_” respectivamente han sido estos:
Vaciado de la base de datos:
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;
Importar Taxonomía:
INSERT INTO tempdb.wp_terms (term_id, name, slug, term_group)
SELECT d.tid, d.name, REPLACE(LOWER(d.name), ‘ ‘, ‘-’), 0
FROM tempdb.drup_term_data d
INNER JOIN tempdb.drup_term_hierarchy h
USING(tid);
las partes en naranja se pueden editar para personalizar la importación. En vez de ‘post_tag’ se puede poner ‘category’ o ‘link_category’ dependiendo de como queremos que nos importe las taxonomías.
INSERT INTO wp_term_taxonomy (term_taxonomy_id, term_id, taxonomy, description, parent)
SELECT d.tid, d.tid, ‘post_tag‘, d.description, h.parent
FROM tempdb.drup_term_data d
INNER JOIN tempdb.drup_term_hierarchy h
USING(tid)
Importar Posts:
En Drupal podemos publicar el contenido como “story”, “book”, “blog”…Dependiendo de como lo tengamos podemos añadir mas filas como la marcada en naranja. En mi caso todo estaba como historia menos tres páginas. Así que lo he dejado como está aquí y me lo ha importado todo correctamente.
INSERT INTO
wp_posts (id, post_date, post_content, post_title,
post_excerpt, post_name, post_type, post_modified)
SELECT DISTINCT
n.nid, FROM_UNIXTIME(created), body, n.title, teaser, LOWER(n.title),
(CASE n.type
WHEN ‘story‘ THEN ‘post‘
ELSE n.type
END) AS type,
FROM_UNIXTIME(changed)
FROM tempdb.drup_node n, tempdb.drup_node_revisions r
WHERE n.vid = r.vid;
Importar relaciones entre posts y taxonomías:
INSERT INTO wp_term_relationships (object_id, term_taxonomy_id)
SELECT nid, tid FROM tempdb.drup_term_node;
Actualizar el contador de categorías:
UPDATE wp_term_taxonomy tt
SET count = (
SELECT COUNT(tr.object_id)
FROM wp_term_relationships tr
WHERE tr.term_taxonomy_id = tt.term_taxonomy_id
);
Importar 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, STATUS
FROM tempdb.drup_comments;
Actualizar el contador de comentarios:
UPDATE wp_posts
SET comment_count = (SELECT COUNT(comment_post_id)
FROM wp_comments
WHERE wp_posts.id = wp_comments.comment_post_id);
Y ya está. A mi uno de los dos contadores me ha dado un error, pero he seguido adelante porque no aprecio que haya mal en el blog. Si veo algo mal ya lo corregiré a mano. Del resto de cosas que sale en la guía que cito no las he usado porque no me hacía falta. Una hecha la migración en local ya solo ha faltado subirla al sevidor, actualizar la url y toquetear algún post que se había desformateado un poco. Ahora a ver que plugins le instalo a esto.











