Caso práctico: Cambiar entrada a Custom Post Type según una categoría

Mejora la estructura de datos, y ten mayor control, separando el contenido en Custom Post Type, mediante SQL.

desarrollo, sql, WordPress

En varias ocasiones, quizá demasiadas, me he encontrado en WordPress que las entradas tienen noticias, ebooks, webinars, videos, opiniones, etc… separadas/identificadas por categorías, o subcategorías, y el problema está en separarlo eficazmente para dar estilos, gestión.

Esa forma de trabajar puede ser la más rápida, pero según van creciendo los contenidos se hace más compleja su gestión, y la estructura de datos no es la más deseable.

En esta ocasión vamos a crear un Custom Post Type, y a este le vamos a transferir unas entradas/contenidos específicos a una determinada categoría.

El Custom Post Type se puede generar a través de GenerateWP para que os genere un PHP, e integrarlo en vuestro tema. Os dejo unas referencias más abajo sobre Custom Post Type.

Antes de empezar, os aconsejo realizar una copia de seguridad de la base de datos, ya que vamos a modificarla, y así, si comentemos un error, tendremos opción de restaurarla.

Seleccionando las entradas de una categoría.

Ahora vamos a seleccionar cuantas entradas existen en la categoría que necesitamos mover al Custom Post Type, que, a partir de ahora, nos referiremos a él como CPT.

Accedemos a la base de datos del servidor, por ejemplo mediante phpMyAdmin, o a través del plugin WP phpMyAdmin (que es una maravilla), y comprobamos que tenemos el mismo número de entradas en la categoría del panel de WordPress, con la siguiente sentencia SQL:

Donde; ‘post‘ es el tipo de CPT que vamos a buscar. ‘category‘ es la taxonomía a la que pertenece la categoría que vamos a buscar, y ’40’ es el ID de la categoría a buscar. En este momento habría que cambiar ‘wp_‘ por el prefijo que tengan configuradas vuestras tablas de la base de datos de WordPress.

Número de entradas en WordPress y resultado de la sentencia SQL

Con esta sentencia se mostrarían las 5 primeras entradas de esa categoría, para comprobar que son correctas:

Pasando una Entrada a un nuevo CPT y a una categoría concreta

Antes de mover todas las entradas, vamos a mover solo una para ver si se hace correctamente. Retomando lo que comentaba al principio, tenemos un nuevo CPT llamado ‘opinion‘, una taxonomía llamada ‘opinion-cat‘ y una categoría llamada editorial con el ID:50 que es dónde moveremos la primera entrada.

En esta ocasión vamos a utilizar variables de mySql para las sentencias que vamos a realizar, y de esta forma lo veremos todo más claro. Cambiando el valor de esas variables, puestas al inicio del código variaremos fácilmente la consulta.

Pasando todas las Entradas a CPT

Una vez que hayamos verificado que funciona correctamente, procedemos a hacerlo con el resto de entradas con las siguientes sentencias:

Probablemente se puedan mejorar las sentencias, pero no le quería añadir mas complejidad.

Conclusión

Quizá haciéndolo de este modo nos estemos complicando un poco mas «la vida» que si lo hiciéramos mediante plugin, pero así tenemos mayor control.

Y por ahora esto es todo, nos vemos en el próximo…

Referencias