¿Cómo cambiar todos los GUID en la tabla de posts?

8 dic 2015, 14:35:15
Vistas: 41.5K
Votos: 10

Recientemente he transferido mi WordPress desde el servidor de desarrollo al servidor de producción. Me di cuenta de que tengo que cambiar todos los "guid" con la URL del dominio de producción. ¿Hay alguna consulta MySQL o función simple disponible para cambiarlo fácilmente?

7
Comentarios

Consulta esta página, al final de este bloque de cambio de URL encontrarás el nombre de algunos plugins. :)

Mayeenul Islam Mayeenul Islam
8 dic 2015 14:53:01

Gracias. Pero solo quiero cambiar el GUID. Ya he hecho otras cosas manualmente. Pensé que habría alguna consulta MySQL disponible para cambiarlo

Kvvaradha Kvvaradha
8 dic 2015 15:11:05

Ojalá WordPress no incrustara URLs en el GUID. No son URLs. No deberías necesitar cambiarlos (o la mayoría de ellos). Ver: http://wordpress.stackexchange.com/a/90209/21376

s_ha_dum s_ha_dum
8 dic 2015 16:08:10

@s_ha_dum. ¿Entonces no hay necesidad de cambiarlo, cierto?

Kvvaradha Kvvaradha
8 dic 2015 16:18:33

Probablemente no @Kvvaradha. Puedes cambiarlos si parece que aún no has desplegado el sitio y, de ser así, no causará ningún problema, pero dudo que realmente necesites cambiarlos.

s_ha_dum s_ha_dum
8 dic 2015 16:21:26

¿Se ha resuelto esta pregunta?

Ethan Rævan Ethan Rævan
13 sept 2016 06:03:03

@O'Sullivan No he realizado ningún cambio en el guid. Y el sitio funciona correctamente. Así que se resolvió sin necesidad de hacer cambios en las consultas.

Kvvaradha Kvvaradha
13 sept 2016 19:29:02
Mostrar los 2 comentarios restantes
Todas las respuestas a la pregunta 6
0
26

Debería ser algo como:

UPDATE wp_posts SET guid = REPLACE(guid, 'oldurl.com', 'newurl.com') WHERE guid LIKE 'http://oldurl.com/%';
  • oldurl.com - URL anterior mostrada en ajustes de WordPress > opciones generales
  • newurl.com - Nueva URL
3 sept 2016 16:18:51
3

Para mejorar las respuestas anteriores, debes actualizar todas las tablas relevantes como (aquí el prefijo de la tabla es wp_):

UPDATE `wp_posts` SET guid = REPLACE(guid, 'oldsiteurl', 'newsiteurl') WHERE guid LIKE 'oldsiteurl%';

UPDATE `wp_postmeta` SET meta_value = REPLACE(meta_value, 'oldsiteurl', 'newsiteurl') WHERE meta_value LIKE 'oldsiteurl%';

UPDATE `wp_options` SET option_value = REPLACE(option_value, 'oldsiteurl', 'newsiteurl') WHERE option_value LIKE 'oldsiteurl%';

Si tienes algún plugin que maneje redirecciones, también deberías cambiar los enlaces permanentes allí:

UPDATE `wp_redirection_404` SET url = REPLACE(url, 'oldsiteurl', 'newsiteurl') WHERE url LIKE 'oldsiteurl%';
9 mar 2020 15:04:39
Comentarios

Suena bien, hombre. Esta respuesta ayudará a algunas personas nuevas

Kvvaradha Kvvaradha
11 mar 2020 06:15:32

Ten mucho cuidado al reemplazar en las tablas wp_postmeta y wp_options... muchas veces hay datos serializados almacenados en estas tablas, si el "oldsiteurl" y "newsiteurl" tienen longitudes de cadena diferentes, corromperás estos campos.

farinspace farinspace
11 jun 2020 18:50:50

Sí @farinspace totalmente correcto, nunca hagas una actualización automática en wp_postmeta y wp_options, necesitarás actualizar esas tablas manualmente y en caso de editar las cadenas serializadas con un editor apropiado https://serializededitor.com/

Jackie Degl'Innocenti Jackie Degl'Innocenti
20 sept 2020 21:15:59
2

Utiliza WP-CLI para buscar y reemplazar. El plugin MigrateDB también tiene una función de buscar y reemplazar al exportar para la próxima vez que hagas una migración.

8 dic 2015 21:58:01
Comentarios

Déjame revisarlo

Kvvaradha Kvvaradha
9 dic 2015 02:59:47

¿Tuviste algún avance?

jgraup jgraup
11 dic 2015 00:05:57
0

Había olvidado que escribí un generador SQL hace unos años precisamente para esta tarea:

https://farinspace.github.io/wp-migrate-gen/

Esencialmente, el SQL relevante es el siguiente:

UPDATE `wp_options` SET `option_value` = REPLACE(`option_value`, 'a', 'b') WHERE `option_value` NOT REGEXP '^([adObis]:|N;)';
UPDATE `wp_posts` SET `post_content` = REPLACE(`post_content`, 'a', 'b');
UPDATE `wp_posts` SET `post_excerpt` = REPLACE(`post_excerpt`, 'a', 'b');
UPDATE `wp_posts` SET `guid` = REPLACE(`guid`, 'a', 'b');
UPDATE `wp_comments` SET `comment_author_url` = REPLACE(`comment_author_url`, 'a', 'b');
UPDATE `wp_comments` SET `comment_content` = REPLACE(`comment_content`, 'a', 'b');
UPDATE `wp_links` SET `link_url` = REPLACE(`link_url`, 'a', 'b');
UPDATE `wp_postmeta` SET `meta_value` = REPLACE(`meta_value`, 'a', 'b') WHERE `meta_value` NOT REGEXP '^([adObis]:|N;)';
UPDATE `wp_usermeta` SET `meta_value` = REPLACE(`meta_value`, 'a', 'b') WHERE `meta_value` NOT REGEXP '^([adObis]:|N;)';
UPDATE `wp_termmeta` SET `meta_value` = REPLACE(`meta_value`, 'a', 'b') WHERE `meta_value` NOT REGEXP '^([adObis]:|N;)';
UPDATE `wp_commentmeta` SET `meta_value` = REPLACE(`meta_value`, 'a', 'b') WHERE `meta_value` NOT REGEXP '^([adObis]:|N;)';

Las consultas anteriores verifican y omiten los datos serializados de PHP.

Usando el generador, puedes desactivar "omitir datos serializados" si las longitudes de las cadenas antiguas y nuevas coinciden.

ADVERTENCIA: Recomiendo que siempre crees una copia de seguridad de tus datos antes de ejecutar cualquier consulta que agregue/elimine/actualice contenido.

24 sept 2020 21:49:15
2

La documentación de WordPress advierte sobre cambiar las entradas guid en la base de datos de WP: "Es crítico que NO cambies el contenido de este campo."

https://wordpress.org/support/article/changing-the-site-url/#important-guid-note

25 jun 2020 15:30:49
Comentarios

Pero cuando el dominio anterior era localhost, la U en GUID realmente no encaja. :)

fuxia fuxia
25 jun 2020 22:40:58

Bueno, como se menciona en la documentación de WordPress, cuando el GUID es utilizado, por ejemplo, por lectores de feeds para identificar contenido único, aún así no importa qué dominio esté en el GUID. No deberías cambiarlo a menos que quieras que los lectores de feeds evalúen todos los GUIDs cambiados como 'nuevos'. Pero cuando pasas de 'localhost' a algún otro dominio, probablemente los lectores de feeds no sean tu principal preocupación... ;-)

user2186232 user2186232
27 jun 2020 15:29:30
1

Como mencionaste, hay algunas variables que necesitan ser cambiadas para que puedas actualizar a la nueva URL en tu sitio WordPress.

  1. Ve y descarga el script de Búsqueda y Reemplazo en Base de Datos de Interconnect IT aquí
  2. Descomprime el archivo y coloca la carpeta en tu servidor en vivo donde está instalado WordPress (la raíz) y renombra la carpeta a replace (captura de pantalla)
  3. Navega a la nueva carpeta que creaste en tu navegador (ej: http://web.site/replace) y verás la herramienta de búsqueda/reemplazo
  4. Hasta este punto debería ser bastante intuitivo: ingresa tu antigua URL en el campo search for… y la nueva URL en el campo replace with…

Puedes hacer clic en el botón dry run (prueba en seco) debajo de actions (acciones) para ver qué reemplazará antes de ejecutar el script. Una vez que hayas terminado, asegúrate de eliminar la carpeta /replace/.

3 sept 2016 16:37:09
Comentarios

Regularmente migro sitios web de WordPress y esto es lo que uso.

Si alguien está interesado, hago dos búsquedas y reemplazos. La primera ejecución es para reemplazar todos los dominios antiguos por los nuevos. La segunda es para forzar SSL.

  1. Reemplazar olddomain.com con newdomain.com
  2. Activar expresiones regulares, reemplazar https?:\/\/([\w-]*\.|)newdomain\.com con https://$1newdomain.com. Esta expresión regular soportará subdominios.

Como siempre, primero haz una prueba en seco y revisa algunos de los resultados.

Curtis Curtis
21 dic 2017 04:13:49