La mudanza de eCuaderno (parte VI: importar preservando el ID y los permalinks)
Continuamos con los tips sobre la mudanza del blog eCuaderno a WP.
Estamos importando la base de datos de MT, para lo cual lo primero que hemos visto que hay que hacer es exportarlos, es decir, crear un archivo llamado, por ejemplo, “export.php”, con los posts. Si la base de datos es muy grande (más de 5MB), es posible que tengan que hacer un ajuste en la configuración de Apache aumentando la memoria. Aquí hay más información al respecto.
Lo que queremos es preservar el ID, es decir que el post http://www.ecuaderno.com/archives/000797.php, de MT, se convierta en el http://www.ecuaderno.com/?p=797 de WP.
Para ello, hay que modificar el script “lib/MT/App/CMS.pm”, de MT, que exporta la base de datos e incluir el número del post. Hay que buscar una línea que contiene “$tmpl->text(<<’TEXT’)” dentro de la parte del programa que define el formato de salida de los posts. Justo encima de la instrucción “AUTHOR: <$MTEntryAuthor$>” se debe incluir la siguiente: “ID: <$MTEntryID$>”. Eso es todo lo que hay que hacer en MT.
Ahora hay que modificar “/wp-admin/import-mt.php”, el script de import en WP. Justo debajo de las siguientes líneas:
case ‘AUTHOR’:
$post_author = $value;
break;
Añada las siguientes:
case ‘ID’:
$post_import_id = $value;
break;
Y antes de la línea “if (0 != count($post_categories)) {” hay que incluir las siguientes:
$wpdb->query(“INSERT INTO $wpdb->posts (ID,
post_author, post_date, post_date_gmt, post_content, post_title, post_excerpt, post_status, comment_status, ping_status, post_name, post_modified, post_modified_gmt) VALUES (‘$post_import_id’,
‘$post_author’, ‘$post_date’, ‘$post_date_gmt’, ‘$post_content’, ‘$post_title’, ‘$excerpt’, ‘$post_status’, ‘$comment_status’, ‘$ping_status’, ‘$post_name’,'$post_date’, ‘$post_date_gmt’)”);
$post_id = $wpdb->get_var(“SELECT ID FROM $tableposts WHERE post_title = ‘$post_title’ AND post_date = ‘$post_date’”);
Con éstas modificaciones obligamos a WP a crear los posts con los mismos IDs que tenían en MT.
También preservaremos los enlaces permanentes y los archivos RSS incluyendo las siguientes líneas en el archivo .htaccess:
RewriteEngine On
RewriteBase /
RewriteRule ^archives/([0-9]{6}).php$ /indexwp.php?p=$1 [QSA,L]
RewriteRule ^index.rdf$ /wp-rss2.php [PT]
RewriteRule ^index.xml$ /wp-rss.php [PT]
RewriteRule ^index.php$ /indexwp.php [PT]
RewriteRule ^$ /indexwp.php [PT]
Hasta que no se elimine definitivamente MT, la home de WP residirá en indexwp.php, por lo que las dos últimas reglas permiten convertir las llamadas a http://www.ecuaderno.com o a http://www.ecuaderno.com/index.php en http://www.ecuaderno.com/indexwp.php.
Las llamadas a los dos archivos RSS de MT se convierten a los de WP con las reglas que aparecen en
cuarto y quinto lugar, mientras que la tercera regla hace la conversión para preservar los permalinks.
Antes de ejecutar el script “/wp-admin/import-mt.php” modificaremos la primera línea para incluir el nombre del archivo con los posts exportados desde MT. Si a dicho archivo lo hemos llamado “export.txt” escribiremos la insrucción siguiente: “define(‘MTEXPORT’, ‘export.txt’);”.
Hay que tener cuidado con dos cosas. Una es que, en WP, se pueden publicar posts y páginas. Las páginas se consideran posts estáticos pero se les va asignando IDs sin distinguirlos de los posts. Eso significa que si creamos páginas antes de importar, corremos el riesgo de que el proceso falle por encontrar claves duplicadas. El truco es importar la base de datos de MT primero y después crear las páginas.
La segunda cuestión problemática es que el usuario Admin puede tener definido un alias y, en ese caso, el script de import, antes de comenzar, pregunta con cuál de los dos se desean crear los posts. Si no nos damos cuenta y los creamos con el alias, se crea el usuario del alias automáticamente. Como pudimos comprobar eso daba problemas en la gestión de logout en el script de comentarios. Hay que tener cuidado de elegir el usuario “Admin” como autor de los posts que se van a importar. Más adelante se podrá cambiar en las opciones de configuración con qué nombre se quiere que se visualicen.
Nosotros llevamos a cabo este proceso con el primer post de eCuaderno. Una vez verificado que todo funcionaba correctamente procedimos a importar toda la base de datos.
[Para saber más sobre el módulo mod_rewrite de Apache]






octubre 3rd, 2005 a las 9:34 am
Que barbaro,la Odisea de Ecuaderno XD