Realizar un cambio de dominio en WordPress puede ser una pesadilla. Todos los enlaces que tengamos que usen el nombre de dominio antiguo van a fallar. Y créeme, no quieres que eso pase.

Seguramente pienses que no vas a cambiar nunca de nombre de dominio y que esto a ti no te afecta. Y estás en lo cierto. Pero, ¿te has planteado quizás usar un certificado SSL en tu web? Sí, me refiero a que aparezca el típico icono del candado en el navegador junto a HTTPS en vez de HTTP. Si es tu caso, vas a tener un problema parecido, aunque habitualmente sólo afectará a imágenes.

Tanto si vas a cambiar de dominio como si vas a usar SSL, ten en cuenta que tu dominio será diferente. Y es importante que sepas como reemplazar enlaces para que todo aquello que apuntaba a http://midominio.com ahora apunte a http://midominionuevo.com o https://midominio.com (según sea tu caso).

Veamos, pues, cómo conseguir aplicar los reemplazos de forma sencilla y de varias maneras diferentes.

Modificando la Base de Datos de WordPress

La opción más rápida es reemplazar los enlaces directamente desde la base de datos con instrucciones SQL. Tan solo debes utilizar la siguiente instrucción para aplicar las modificaciones en el contenido de tus entradas y páginas:

UPDATE wp_posts 
SET post_content = 
REPLACE (post_content, 'http://midominio.com', 'http://midominionuevo.com');

Anteriormente ya te expliqué cómo trabajar con SQL y lo útil que resulta para un montón de tareas relacionadas con WordPress. Aparentemente, con esto ya estaría todo, ¿no? En realidad, todavía no estamos, ya que es muy posible que haya enlaces antiguos en otros lugares de la base de datos, como por ejemplo en la columna guid de la tabla wp_posts para todas las imágenes almacenadas en nuestra Biblioteca de Medios. En tal caso, puedes usar esta sentencia SQL:

UPDATE wp_posts 
SET guid = 
REPLACE (guid, 'http://midominio.com', 'http://midominionuevo.com');

y, aún así, seguiríamos sin tener todo actualizado. Nos estamos dejando más apariciones de enlaces antiguos en otros lugares, como por ejemplo en las tablas wp_options o wp_postmeta de tu base de datos WordPress. Si estás pensando en ir aplicando las sentencias anteriores a las nuevas tablas, te recomiendo que frenes un poco y sigas leyendo.

El problema con las tablas wp_options o wp_postmeta es que, en muchos casos, almacenen cadenas de texto serializadas. Una cadena de texto serializada en PHP no es más que una forma de almacenar datos en la base de datos. Por ejemplo, podríamos tener este conjunto de datos en PHP (un array):

array (
 'dominio' => 'http://midominio.com',
 'usuario' => 'avillegasn',
 'edad' => 30
);

Si lo guardamos en la base de datos serializado, el resultado es el siguiente:

a:3:{s:7:"dominio";s:20:"http://midominio.com";s:7:"usuario";s:10:"avillegasn";s:4:"edad";i:30;}

Si miras el resultado anterior con detalle, verás que los números que aparecen delante de los valores indican la longitud en caracteres (de hecho, en bytes) del valor. Para este caso, si guardamos http://midominio.com, automáticamente se indica con un 20 que la longitud (en este caso, el número de letras) es esa. Por lo que si directamente hacemos el reemplazo por http://minuevodominio.com, tendremos:

a:3:{s:7:"dominio";s:20:"http://minuevodominio.com";s:7:"usuario";s:10:"avillegasn";s:4:"edad";i:30;}

Pero claro, http://minuevodominio.com no tiene 20 letras, sino 25. Cuando WordPress intente “deserializar” este valor, fallará estrepitosamente. Y no queremos que esto pase.

Por tanto, parece que utilizar SQL no es lo más recomendable para modificar todos los enlaces. Afortunadamente, hay más opciones.

Usando un Script PHP

Una opción más sencilla que ir directamente a toquetear la base de datos es usar un script PHP que realice las labores por nosotros. Si eres un crack del PHP es posible que seas capaz de programar el script tu mismo; ¡enhorabuena por ello! 😀 Pero sino, puedes usar este script de interconnect/it que funciona tanto para WordPress como para Drupal.

Script de interconnect/it para buscar y reemplazar, teniendo en cuenta cadenas serializadas.
Captura del script de interconnect/it para buscar y reemplazar, teniendo en cuenta cadenas serializadas.

Lo bueno de este script es que sólo lo tienes que subir a la raíz de tu instalación WordPress (mediante FTP, por ejemplo) y acceder a él desde el navegador. Se te abrirá una interfaz como la que puedes ver en la captura anterior, dónde tendrás que indicar los datos de acceso a tu base de datos para que el script pueda acceder a ella.

A partir de ese momento, puedes usar el formulario para buscar y reemplazar valores de forma sencilla, tal y como harías en cualquier editor de texto habitual. No obstante, recuerda hacer una copia de seguridad de tu base de datos para evitar posibles problemas.

Plugins de Búsqueda y Reemplazo

Por último, aquí te dejo 4 plugins para realizar reemplazos en tus contenidos, los cuales tienen en cuenta los valores serializados y hacen la búsqueda en todas las tablas de la base de datos. Además, no necesitas nada más que instalarlos y activarlos como cualquier otro plugin. Así de fácil.

Better Search Replace

Better Search Replace
Better Search Replace

Este plugin nos permite buscar y reemplazar cualquier contenido. Tiene en cuenta valores serializados y además permite hacer una simulación para saber cuantas apariciones va a sustituir antes de realmente hacer los reemplazos. De esta manera podemos tener un poco más de idea sobre el impacto que los cambios van a tener.

No es el más popular, pero está traducido al español, lo que es un plus.

Search & Replace

Search & Replace
Search & Replace

Un plugin muy parecido al anterior, para buscar y reemplazar contenidos en general. Lo bueno de este es que aparentemente permite hacer copia de seguridad de la base de datos. Además, su interfaz es muy sencilla. Sólo hay que seleccionar en qué tablas queremos realizar la búsqueda y listo. Una opción interesante y con buena puntuación en el directorio de plugins de WordPress.

Velvet Blues Update URLs

Velvet Blues Update URLs
Velvet Blues Update URLs

Es el plugin que yo suelo utilizar, sobretodo por ser de los más antiguos y además seguir recibiendo actualizaciones de vez en cuando. Es específico para modificar enlaces, ya que sólo debes decirle cual es la dirección web antigua y la nueva, y dónde quieres que haga la búsqueda (habitualmente, con marcar todas las opciones que ofrece es suficiente).

Como resultado nos indica el número de sustituciones que ha hecho. Para mí, de los mejores para esta labor, y el que más descargas e instalaciones activas tiene (casi 700.000 y más de 200.000, respectivamente).

WP Migrate DB

WP Migrate DB
WP Migrate DB

Aunque este plugin se suele usar para hacer migraciones de webs en WordPress, también incluye la opción de buscar y reemplazar contenidos. Por tanto, si alguna vez lo has usado o ya estás familiarizado con él, será una opción a tener en cuenta cuando tengas que hacer un cambio de dominio. Más de 500.000 descargas y 100.000 instalaciones activas lo avalan.

Resumen

Has visto tres maneras completamente diferentes de modificar enlaces (incluso cualquier texto) en tu instalación WordPress:

  • La opción más arriesgada es la de utilizar sentencias SQL, ya que no solucionan el problema de las cadenas de texto serializadas.
  • Alternativamente, puedes usar un script como el de interconnect/it (más info aquí) o hacerte tu el tuyo propio, aunque esta opción no es para todo el mundo.
  • Y si eres un usuario básico o principiante, dispones de varios plugins que te ayudan a buscar y reemplazar enlaces antiguos. Sin duda, esta es la mejor opción si para ti las siglas FTP o SQL te suenan a chino mandarín. Eso si, acuérdate de desactivarlos una vez hayas terminado de usarlos.

En cualquier caso, y sea cual sea la solución por la que te decantes, recuerda tener precaución y hacer una copia de seguridad de tu base de datos WordPress para poder recuperar todo en caso de catástrofe.

Imagen destacada de George Laoutaris.

No hay comentarios

Dejar respuesta