Renombrar tipos de publicaciones personalizadas y taxonomías

31

Comencé a desarrollar un sitio con más de una docena de tipos de publicaciones personalizadas. Me gustaría cambiar el nombre de algunos de ellos, no solo el valor de visualización, sino el nombre del tipo de publicación personalizada real. Sin embargo, me preocupa que al ejecutar una consulta de actualización de SQL extrañe algunos lugares donde necesito cambiar cosas o sobrescribir parte de los datos serializados. Ya he introducido más de 3.000 elementos, por lo que no puedo reiniciar con una base de datos limpia.

¿Cuál sería la mejor manera de cambiar el nombre de un tipo de publicación personalizado? ¿Qué tal cambiar el nombre de una taxonomía?

Derek Perkins
fuente
Una pregunta de seguimiento en la misma línea está relacionada con las reglas personalizadas de reescritura de .htaccess. ¿Habrá muchas reglas sobrantes que obstruyan mi base de datos? Todavía no he lanzado el sitio, por lo que no necesito que ninguno de los enlaces anteriores sea redirigido.
Derek Perkins

Respuestas:

47

Consulta SQL para renombrar las publicaciones:

UPDATE  `wp_posts` SET  `post_type` =  '<new post type name>' WHERE  `post_type` = '<old post type name>';

Consulta SQL para renombrar taxonomía:

UPDATE  `wp_term_taxonomy` SET  `taxonomy` =  '<new taxonomy name>' WHERE  `taxonomy` = '<old taxonomy name>';

Eso debería ocuparse de todas las áreas de la base de datos. Solo recuerde hacer coincidir los nuevos nombres en el código donde se registran los tipos de publicaciones o taxonomías. Hasta donde sé, esto aún no se maneja en ningún complemento.

John P Bloch
fuente
99
Excelente respuesta, exactamente lo que necesitaba. Aquí hay un consejo en caso de que otros encuentren el mismo problema que yo: después de ejecutar la consulta y actualizar mi código, las cosas básicamente funcionaban, pero cuando intenté ir a la página para un elemento de contenido individual, recibí un error 404. Creo que es necesario restablecer el caché de enlace permanente Fui a Herramientas> Enlaces permanentes e hice clic en Guardar, luego las páginas detalladas comenzaron a funcionar.
Andy Giesler
Cuando hice esto, también actualicé el campo guid. Esto podría ayudar a que sea innecesario regenerar enlaces permanentes como mencionó @AndyGiesler. Simplemente incluya lo siguiente en su declaración ACTUALIZACIÓN: guid = REPLACE (guid, '<nombre de tipo de publicación anterior>', '<nombre de tipo de publicación nueva>')
rinogo
Solo para agregar un poco más de información al comentario de rinogo, esta es una forma un poco más segura de actualizar el guid: ACTUALIZAR wp_posts SET guid = REPLACE (guid, 'post_type = <post post type>', 'post_type = <new post type name > ');
David
sólo para nota tendrá que ver sus nombres de tabla cuando se ejecuta en múltiples sitios
acSlater
6

Hola @Derek Perkins:

En general, la respuesta de @John P Bloch es acertada pero con una advertencia . Los complementos e incluso los temas personalizados pueden y pueden almacenar información de tipo de publicación y, por lo tanto, para asegurarse de que no dañará sus datos, debe asegurarse de que sus complementos y temas no almacenen tipos de publicaciones o, si lo hacen, actualice sus datos también.

¿Puede decirnos qué complementos está utilizando?

MikeSchinkel
fuente
Ese es un buen punto. Estoy creando mi tema personalizado, por lo que definitivamente tendré que revisar y cambiar mi código. Sin embargo, no tengo ningún complemento que almacene información de tipo de publicación personalizada.
Derek Perkins
Este es un buen punto. Estaba usando campos personalizados avanzados, y para cada grupo de campos adjunto a esa publicación, debe restablecerlo manualmente al nuevo nombre de CPT. Después de eso, funciona bien.
Chris Rae
4

Si no desea realizar las consultas SQL usted mismo, hay algunos complementos que puede usar:

He utilizado con éxito Convertir tipos de publicaciones para publicaciones de cambio masivo.

Para convertir publicaciones invididuales, Post Type Switcher es una mejor opción.

Adam Dempsey
fuente
Gracias por publicar esos enlaces. Estoy bien ejecutando las consultas SQL, pero definitivamente serán útiles para otros que se encuentren con esta publicación.
Derek Perkins
esto parece convertir los tipos de publicaciones, no cambiarles el nombre
vladkras