Diseño Web, Registro de dominio y Hospedaje Web

domingo, 25 de julio de 2010

Migración de Drupal a WordPress



Paso Previo: Tema

Crear un tema nuevo para WordPress que se parezca lo máximo posible al de Drupal. Se trata de uno de los pasos más laboriosos ya que el sistema de plantillas de ambos gestores de contenidos no se parece demasiado.

· Este paso seguramente implicará instalar WordPress en el ordenador para poder hacer pruebas rápidas durante la elaboración de este.

· Añadir al tema código de seguimiento de Google Analytics y/o otras páginas.

· Si se han de añadir imágenes o enlaces relativos a la ruta del tema se puede usar el siguiente fragmento:

<?php bloginfo('template_directory'); ?>

Una vez completado el paso 0 , se puede proceder a hacer la migración. Aconsejo hacerlo con tiempo suficiente (2-3 horas), habiendo “practicado” antes en un entorno de pruebas. Para “practicar” se han de ir siguiendo cada uno de los pasos, anotando las dificultades que encontremos o los pasos que hagamos de diferente forma. De esta forma cuando se vaya a hacer de manera definitiva únicamente tendremos que seguir lo anotado y reducimos las posibilidades dedejar la página offline durante más tiempo del necesario.

Paso 1: Copia de seguridad de la base de datos

Hacer copia de seguridad de la base de datos de Drupal. Antes de proseguir es muy importante poner Drupal en “Modo mantenimiento” para evitar que otros visitantes dejen comentarios en la web mientras hacemos el backup.

Paso 2: Copia de seguridad de los archivos

Hacer copia de seguridad de los archivos alojados por Drupal, especialmente de los siguientes:

· temas personalizados

· plugins o como mínimo anotar el nombre

· archivos subidos: por ejemplo imágenes de los artículos, etc.

Paso 3: Preparar Base de Datos

Crear una base de datos para WordPress, así como un usuario para acceder a ésta, en en MySQL. Hecho mediante el interfaz de gestión de mi hosting.

Paso 4: Instalar WordPress

4.1. Descargar WordPress en español de http://es.wordpress.org/

wget http://es.wordpress.org/wordpress-3.0-es_ES.tar.gz

4.2. Descomprimir en el directorio apropiado

tar -xzvf wordpress-3.0-es_ES.tar.gz

4.3. Renombrar el archivo de configuración general de WordPress suministrado como ejemplo al de configuración de verdad.

mv wp-config-sample.php wp-config.php

4.4. Editar el archivo wp-config.php para adaptarlo a nuestra configuración de base de datos. En particular hemos de modificar las siguientes líneas:


define('DB_NAME', 'nombredetubasededatos');

define('DB_USER', 'usuarioconaccesoalabasededatosmysql');

define('DB_PASSWORD', 'passwordanteriorusuario');

define('DB_HOST', 'nombreservidor');

· En mi caso no me interesa guardar todas las revisiones de un artículo por lo que también he añadido la siguiente línea:

define('WP_POST_REVISIONS', false);

· Y aprovecho para definir la frecuencia (en segundos) de autoguardado de artículos que están editandose, para ello añado la siguiente línea:

define('AUTOSAVE_INTERVAL', 60);

4.5. Cargar en el navegador la dirección http://tudominio.com/wp-admin/install.php para que WordPress inicie la autoinstalación. Rellenar los puntos que solicite.

Paso 5: Instalar el plugin WP Maintenance Mode

5.1. Buscar “WP Maintenance Mode”

5.2. Hacer click en “Instalar ahora”

5.3. Configurarlo y activarlo para que los visitantes no vean los trabajos que se van realizando.

Paso 6: Configurar WordPress

6.1. Copiar tema personalizado en el directorio wp-content/themes

6.2. Activar tema personalizado “Kilian Blog” en el menú Apariencia -> Temas

6.3. Añadir Widgets a la barra lateral en el menú Apariencia -> Widgets. En mi caso:

· Buscar

· Archivos

· Menu personalizado (para “Mis Proyectos)

· Enlaces

· Texto – Música Favorita

6.4. Configurar enlaces permanentes en el menú Ajustes -> Enlaces permanentes. En mi caso, para manetener los mismos enlaces que usaba en Drupal, usaré la siguiente estructura personalizada:

contenido/%postname%

6.5. Configurar el resto de opciones al gusto (formato fecha, etc.)

6.6. Activar Protocolo de publicación Atom y XML_RPC en Ajustes -> Escritura para poder publicar desde herramientas de terceros (Microsoft Word 2007, Windows Live Writer)…

Paso 7: Migrar los datos

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);

Paso 8: Menú “Mis Proyectos”

Para simular el menú “Mis Proyectos”, usaremos los posts de tipo “Página” que ya se habrán importado en el paso anterior.

8.1. Deshabilitamos la posibilidad de agregar comentarios en las entradas de tipo “Página” ejecutando la siguiente consulta SQL:

UPDATE wp_posts SET ping_status='closed', comment_status='closed' WHERE post_type='page'

8.2. Apariencia –> Menús –> Crear menú –> “Mis proyectos”

8.3. Añadir páginas correspondientes a mis proyectos al menú

8.4. Apariencia –> Widgets –> Asociar menú creado al widget “Menú personalizado” creado anteriormente

Paso 9: Formulario de contacto

9.1. Instalar plugin “Fast and Secure Contact Form for WordPress” de la misma forma que se hizo para el plugin “WP Maintenance Mode”.

9.2. Activar el plugin

9.3. Configurar el plugin

9.4. Crear una nueva página desde el menú Páginas–>Añadir nuevo con este contenido:

si-contact-form form='1' (rodeado de corchetes [ y ])

9.5. Añadir un nuevo “Menú Personalizado” llamado “Contactar” que incluya esta página.

Paso 10: Categorías/Taxonomía

Aunque se puede automatizar la migración de categorías/taxonomías, he preferido hacer este proceso manualmente para reorganizar y eliminar algunas no usadas.

Paso 11: Enlaces de amigos

Añadir enlaces mediante la opción Enlaces–>Añadir nuevo. Asociarlos a la categoría “Enlaces amigos” para que aparezca en el panel con ese título.

Paso 12: Imagenes existentes

Copiar/Mover las imágenes del directorio de Drupal al de WordPress. Al mantener exactamente la misma estructura no hará falta editar los artículos para actualizar las rutas.

Via: http://kilian.chouza.com/

1 comentario:

Jordi Cabot dijo...

Para los que preferís ejecutar un programa en lugar de interactuar directamente con la base de datos, un programa Java open source está disponible aquí http://modeling-languages.com/migrating-drupal-6-to-wordpress-3/

Y los no expertos pueden dejar que http://wordpressdrupal.com haga el trabajo por ellos!