Arreglar el campo “guid” de la tabla wp_posts para todas las publicaciones de WordPress
Venía escribiendo este largo post desde hacía unos cuantos días… de tontorrón, seguro que no se me ocurrió actualizar los permalinks desde "Options / Permalinks" jamás. No se desde que versión WordPress hace el UPDATE al campo guid al cambiar el modo de representar los permalinks, creo que en las versiones viejas no lo hacía. Como sea, tipee como un tarado y me vengo a dar cuenta de mi esfuerzo inútil al ver que Monuz tiene todos los “pretty permalinks” bien puestitos con sólo haber hecho un par de certeros clics.
Bueno, con bronca publico este textucho semi-técnico, quizás le sirva a alguien con WP 1.x, o no, como sea…
De última puede ser útil para el que quiera aprender un cacho del uso de consultas MySQL “en la cancha”…
Entiéndase por publicaciones los posts comunes (los cronológicos), no las páginas fijas.
¿Qué es lo que pretendo corregir con este instructivo?
Se trata de arreglar el permalink o enlace permanente de un post. Suele ocurrir lo siguiente: arrancás tu blog con el modo de representación estándar de los posts, es decir: www.pepito.com/?p=1. Luego, al rato, descubrís que WP te permite la chetez de poner “pretty permalinks” del tipo www.pepito.com/mi-coco-es-su-coco/ o www.pepito.com/2007/04/29/mi-coco-es-su-coco/ o varias otras combinaciones más paquetas que el número de post a lo chancho.
Pero… ¿qué pasó?
Que los “permalinks” viejos quedaron grabados como www.pepito.com/?p=1, pues el permalink queda grabado en el campo guid de la tabla wp_posts en el momento en que se publica.
También el otro caso es el “con y sin www” (la papa es SIN (Enforce www. Preference). Caso en el que arrancaste el sitio con www, y luego se lo sacaste (lo que yo hice en GATTACA); los primeros posts quedaron con el www grabado en guid.
El caso de referencia del problema que resuelvo con estos comandos SQL es:
Día mundial sin tabaco (2005-05-31)
http://gattaca.com.ar/weblog/?p=298
http://gattaca.com.ar/weblog/archivos/2005/05/31/dia-mundial-sin-tabaco/
Esta maniobra fue ejecutada con éxito en GATTACA el 13/01/2007.
INSTRUCTIVO
==========
Se necesita phpMyAdmin o similar, hacer backup de la tabla wp_posts antes de empezar y saber que es lo que se está haciendo.
En el ejemplo la tabla de posts se llama wp_gattaca_posts, el nombre por defecto que asigna WordPress es wp_posts.
————-
1) Creo campo temporal `temp_nuevo_guid` en donde voy a grabar como DEBERIA SER el guid correcto, y lo lleno.
Atención en este punto a como manejás vos tu viejos posts, si los ponés bajo un path “archivos” como yo o no, o directamente con la fecha, o si usás sólo el año, o sólo el año y el mes, etc. Acá es donde tenés que activar tu mente.
ALTER TABLE `wp_gattaca_posts` ADD `temp_nuevo_guid` VARCHAR( 255 ) NOT NULL COMMENT ‘HighToro - campo temporal’;
UPDATE wp_gattaca_posts SET `temp_nuevo_guid` = concat( “http://gattaca.com.ar/weblog/archivos/”,
date_format( post_date, “%Y/%m/%d” ) , “/”, post_name, “/” )
WHERE post_status = “publish”;
2) Creo campo temporal `temp_viejo_guid` en donde voy a grabar como ERA el guid antes de hacerlo pelota. Por si las moscas, ¿vió?
ALTER TABLE `wp_gattaca_posts` ADD `temp_viejo_guid` VARCHAR( 255 ) NOT NULL COMMENT ‘HighToro - copia de guid anterior’;
UPDATE wp_gattaca_posts SET `temp_viejo_guid` = `guid` WHERE post_status = “publish”;
3) Piso lo que hubiera en el guid de los posts con el nuevo formato arreglado, es decir, la gracia final de este proceso.
UPDATE wp_gattaca_posts SET `guid` = `temp_nuevo_guid` WHERE post_status = “publish”;
4) Luego de haberse asegurado que nada falló (oiga, a su riesgo, a mi no me reclame nada) podría borrar las dos columnas temporales que fueron usadas para este proceso.
ALTER TABLE `wp_gattaca_posts`
DROP `temp_nuevo_guid` ,
DROP `temp_viejo_guid` ;
Este instructivo está dedicado a m. en el día de su cumpleaños. ![]()
[Imprimir]
Si este artículo le resultó útil, considere enlazarlo desde su sitio web. Simplemente copie y pegue (CTRL+C y CTRL+V) el código de abajo. Se verá así: Arreglar el campo “guid” de la tabla wp_posts para todas las publicaciones de WordPress
Tanto pingbacks como trackbacks no funcionan.
Comentarios
Deje un comentario que tenga que ver con lo publicado.
Condiciones para comentar.
- Groserías y publicidad de cualquier tipo será eliminada.
- *JAMÁS* deje su e-mail en el cuerpo del comentario.
- No solicite que lo agreguen a mensajeros dejando su e-mail.
- No solicite que le envíen información a su e-mail.
- Escriba únicamente en castellano.
- *NADA RELIGIOSO*.
NO ESCRIBA TODO EN MAYÚSCULAS.- Contactar al Operador.
Si Usted no cumple con estos requisitos su comentario no será publicado.




Mientras a una sola persona le sirva tu trabajo habrá tenido sentido (eso creo). De todos modos es muy fea la sensación de darse cuenta que hay una forma más simple de hacer las cosas y no la conocíamos, o la de comentaria como novedad algo demasiado viejo.
Te entiendo porque me ha pasado.
Maese Toro, es notable en este rubro lo que uno invierte de tiempo y esfuerzo para resolver temas que cada 3 meses quedan obsoletos. Estoy filosófico esta mañana gris húmeda, pero esta sensación de vivir en permanente demo/borrador/draft no parece que vaya a engendrar cerezos.
Bue’ que se yo, supongo que siempre es mejor hacer que no hacer
(aunque sea medio al pedo); pensándolo bien… ¿cuántas cosas haremos que ya están hechas por n-cacholis y que por no saber en donde o como buscarlas las hacemos desde cero? Como este caso.
Los ejemplos SQL de última sirven, ja.