Buscar en masa y reemplazar las bases de datos de WordPress - La manera fácil
Hay varias ocasiones donde tenemos que Cambiar URLs en nuestra base de datos de WordPress. Por ejemplo, debemos hacer esto después de migrar una base de datos de WordPress desde un sitio, por ejemplo. desde el http://acme.com
sitio de producción remota, a la http://acme.dev
sitio web de desarrollo local en nuestra computadora.
WordPress.org alberga una gran cantidad de complementos, como WP DBManager y WP Migrate DB, y también hay una serie de herramientas de terceros que le permiten importar base de datos fácilmente. La parte difícil es tener que cambiar cada instancia de URL dentro de la base de datos.
Después de migrar la base de datos, URLs dentro de ella todavía apunta al sitio antiguo, en este caso a acme.com
. Puede encontrar la antigua URL en el wp_options
tabla, establecido como el valor de la Sitio URL
y casa
opciones, y probablemente también esté incrustado en varias otras filas y tablas en la base de datos. Estas URL antiguas pueden eventualmente evitar que su sitio se ejecute correctamente, por lo que necesita cambiarlos a la nueva URL, en nuestro ejemplo para acme.dev
.
En este punto, accediendo a nuestro sitio de desarrollo en acme.dev
simplemente conducirá a una página en blanco.
Entonces, ¿cómo cambiamos todas estas URL en la base de datos??
Ejecutando una consulta SQL
Por lo general, la gente ejecutaría la siguiente consulta SQL que reemplaza los valores de Sitio URL
y casa
opciones en el wp_options
mesa.
ACTUALIZAR wp_options SET option_value = replace (option_value, 'http://acme.com', 'http://acme.dev') DONDE option_name = 'home' O option_name = 'siteurl';
Posteriormente, utilizan otra consulta SQL para reemplazar todas las apariciones de URL en el wp_posts
mesa, concretamente en el Publicar Contenido
columna de cada fila.
ACTUALIZAR wp_posts SET post_content = replace (post_content, 'http://acme.com', 'http://acme.dev');
Ejecutar estas consultas es una solución viable, pero al mismo tiempo, no es conveniente hacerlo. Incluso podría ser estresante, al ver cómo la base de datos puede volverse descontrolada debido a un simple descuido dentro de la consulta..
Aprovechando WP-CLI
Otra ruta que podemos hacer, y que he encontrado para ser una alternativa más útil, es por aprovechando la línea de comandos de WP-CLI. Esto significa que necesitará tener instalado WP-CLI.
Suponiendo que ha instalado WP-CLI y tiene el wp
comando accesible como alias, navegue al directorio donde residen los archivos de su sitio de WordPress.
Luego, ejecute el siguiente comando:
wp search-replace 'http://acme.com "http://acme.dev
El primer parametro, 'http://acme.com'
, Es la antigua entrada que se sustituirá por la segunda., 'http://acme.dev'
.
La línea de comando buscará a través de Todas las tablas dentro de la base de datos., no solo el Publicar Contenido
columna y wp_options
mesa, y reemplazar cada instancia De la entrada pasada a través de los parámetros del comando..
Como puede ver en la captura de pantalla anterior, se han realizado un total de 225 reemplazos. Y lo hemos hecho a través de una simple línea de mando..
Creo que vale la pena mencionar que podemos usar el wp buscar-reemplazar
comando, no solo para reemplazar URLs, sino cualquier parte de valor almacenado en la base de datos también. También podemos limitar la operación en una tabla determinada pasando el nombre de la tabla como el cuarto parámetro, de la siguiente manera:
wp search-replace '.jpg ".webp' wp_posts
Ejecutando el comando anterior, solo buscará a través de wp_posts
, La tabla que almacena nuestro contenido (publicaciones, páginas, etc.) y reemplaza la extensión de imagen de .jpg
a .webp
.
WP-CLI hace que una operación de SQL enredada parezca más intuitiva, y puede trabajar con ella de una manera más conveniente. Si desea afinar sus comandos, eche un vistazo a la documentación de WP-CLI, que le proporciona una lista de opciones para realizar una operación más avanzada con el wp buscar-reemplazar
mando.