Importar contenido de Drupal a WordPress

 
Debido a la venta de unos cuantos blogs que tenía en Drupal he tenido que convertirlos de Drupal a wordpress. Ha sido bastante difícil encontrar información al respecto, pero al final he encontrado un método bastante rápido y sencillo a base de consultas SQL y que funciona con una gran cantidad de versiones de Drupal y WordPress.

Según el Tutorial Original, está probado para importar de Drupal 6 a wordpress v2.7 pero yo he convertido con ete método de Drupal 5 y varias versiones de Drupal 6.x a wordpress 3.x (pero no con las últims versiones)

migrar de drupal a wordpress

Antes de empezar la migración haz una copia de seguridad de web, tanto de la base de datos que vamos a modificar como de los ficheros (por si acaso)

Paso 1

Lo ideal es coger una nueva base de datos, o duplicar la existente y sobre esta instalar wordpress y trabajar con ella, porque si hay algún error, solo hay que borrarla y cambiar el archivo de configuración de nuestro Drupal para que tire de la base de datos original.

La diferencia en el número de tablas entre Drupal y WordPress es brutal. En este aspecto wordpress es tremendametne mas ligero.

 Una vez tengamos hecho este paso únicamente deberemos ejecutar las sentencias SQL que se muestran a continuación para importar los datos desde Drupal a WordPress

Consultas SQL para importar de Drupal a WordPress

Nosotros hemos ejecutado las sentencias utilizando phpmyadmin

 phpmyadmin para consultas sql en migracion

IMPORTANTE: el valor “tempdb.”que veis en todas las consultas es el usado como ejemplo, debeis cambiar “tempdb” por el nombre de vuestra base de datos. Lo mejor es utilizar wordpad o noetpad++ para buscar y reemplazar.

Limpiar WordPress antes de la importación.

1
2
3
4
5
6
7
TRUNCATE TABLE tempdb.wp_comments;
TRUNCATE TABLE tempdb.wp_links;
TRUNCATE TABLE tempdb.wp_postmeta;
TRUNCATE TABLE tempdb.wp_posts;
TRUNCATE TABLE tempdb.wp_term_relationships;
TRUNCATE TABLE tempdb.wp_term_taxonomy;
TRUNCATE TABLE tempdb.wp_terms;

Importar los Términos de las Taxonomías

La siguiente consulta importará los taxonomy terms.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
INSERT INTO tempdb.wp_terms (term_id, `name`, slug, term_group)
SELECT
 d.tid, d.name, REPLACE(LOWER(d.name), ' ', '-'), 0
FROM tempdb.term_data d
INNER JOIN tempdb.term_hierarchy h
 USING(tid)
;
 
INSERT INTO tempdb.wp_term_taxonomy (term_id, taxonomy, description, parent)
SELECT
 d.tid `term_id`,
 'category' `taxonomy`,
 d.description `description`,
 h.parent `parent`
FROM tempdb.term_data d
INNER JOIN tempdb.term_hierarchy h
 USING(tid)
;

Importar el contenido de los posts

Esta consulta importará el contenido de los posts de Drupal a WordPress

1
2
3
4
5
6
7
8
9
10
INSERT INTO
    tempdb.wp_posts (id, post_date, post_content, post_title,
    post_excerpt, post_name, post_modified)
SELECT DISTINCT
    n.nid, FROM_UNIXTIME(created), body, n.title,
    teaser,
    REPLACE(REPLACE(REPLACE(REPLACE(LOWER(n.title),' ', '-'),'.', '-'),',', '-'),'+', '-'),
    FROM_UNIXTIME(changed)
FROM tempdb.node n, tempdb.node_revisions r
WHERE n.vid = r.vid

Consulta para relacionar los posts con las categorías.

Relacina los posts con sus categorías.

1
2
INSERT INTO tempdb.wp_term_relationships (object_id, term_taxonomy_id)
SELECT nid, tid FROM tempdb.term_node;

Actualizando el Category Count

1
2
3
4
5
6
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
);

Comments Query keeping unapproved comments hidden

1
2
INSERT INTO tempdb.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.comments;

Actualizar el comments coun en wp_posts

1
UPDATE `wp_posts` SET `comment_count` = (SELECT COUNT(`comment_post_id`) FROM `wp_comments` WHERE `wp_posts`.`id` = `wp_comments`.`comment_post_id`);

Fija el break (teaser o seguir leyendo) en el contenido del post

1
UPDATE tempdb.wp_posts SET post_content = REPLACE(post_content, '', '');

Fija las imágenes en el contenido del post

Fijaros bien en la ruta /sites/default/files/ si tienes las imagenes en otra ruta pon la tuya.

1
UPDATE tempdb.wp_posts SET post_content = REPLACE(post_content, '"/sites/default/files/', '"/wp-content/uploads/');

Si todo ha ido bien, todo el contenido de Drupal se tiene que haber importado en WordPress, ahora podemos borrar las tablas de Drupal de la base de datos, dejando las tablas wp_ de wordpress intactas.

Pasos Finales

Subir a content/images el contenido de tu carpeta de imágenes, lo normal es /sites/default/files pero puedes tenerlo en otra ruta dependiendo de como las subas. Hasta que no hagas este paso las imágenes no se verán

Antes de borrar nada comprueba, que todo se ha importado bien, te aparecen las imágenes, los posts, categorías, comentarios y que todo funciona bien.

En los sitios que he migrado al no ser muy grandes, además he dado un paso más, he sacado la ruta de los posts y las hrelacionado con ls nuevas url generadas, con esto he hecho una redirección 301 en el .htaccess aguantarlo por lomenos 15 días hasta que las neuvas url estén indexadas y posicionadas,aunque no pasa nada por dejarlo más tiempo.Es cierto qu el proceso es un poco manual pero vale la pena.

Como tenía drupal instalado en la raíz de de la he tenido que borrar todas las carpetas y contenido y trasladar las de la instalación de wordpress, en mi caso miurl.com/wordpress a mirul.com

A falta de que configuréis wordpress y sus plugins está todo hecho. Hay muchos motivos por los que utilizar wordpress, es un gran CMS pero yo sigo estando enamorado de Drupal ;-)

Fuente:

Drupal Webmaster

4 comments

Deja un comentario