Este artículo tiene más de 2 años. Si contiene información técnica es posible que no se ajuste a las últimas versiones.

Cómo crear una serie o colección de artículos en WordPress

En ocasiones puede ser necesario agrupar los artículos o entradas de un blog con WordPress en una serie o colección particular. Esto se ve con frecuencia en tutoriales en internet que van publicando entregas que están relacionadas entre sí, y que por ser extensas, se agrupan en una serie. También es un caso común en un blog cuando tenemos asignada una categoría a la entrada, pero no queremos crear una categoría adicional para sólo una serie. Hacerlo con etiquetas, tampoco es deseable, porque como se sabe, las etiquetas deben describir el contenido y no tanto agruparlo.

Agrupar una serie de artículos a través de una categoría personalizada

Como con infinidad de situaciones existen plugins en WordPress que permiten realizar series de artículos, pero no obstante, voy a explicar una forma de agrupar artículos a través de la creación de una categoría o taxonomía personalizada (custom taxonomy). Esta solución me parece mucho más flexible, permite controlar más el código y además es más extensible. Podremos aprovechar esta funcionalidad para enriquecer el contenido de nuestro blog o sitio web.

Plugin WordPress WP Post Series

El proceso para la creación de una serie de artículos consiste en crear la categoría personalizada y en adaptar el código de las plantillas para mostrar esa información donde nos interese. Para ello se van a plantear dos opciones. Una es exclusivamente a través de las funciones de creación de la categoría personalizada en WordPress y la otra aprovechando la funcionalidad del plugin Advanced Custom Fields y su campo de relación Taxonomy.

Creación de la categoría personalizada Series

La creación de una categoría personalizada es sumamente fácil y se puede hacer a través de un plugin para crear entradas y categorías personalizadas o a través de código. En este ejemplo lo veremos con código para poder apreciar el proceso. Para ello haremos uso de la función register_taxonomy() que habrá que incluir, como siempre, en un archivo functions.php o preferiblemente como plugin separado donde incluir el código extra (es mejor no mezclar código en nuestro tema).

La función register_taxonomy() es muy similar a la de creación de entradas personalizadas (custom post type) y nos permite extender las categorías o etiquetas de nuestro WordPress. En este caso, crearemos una categoría llamada Series, desde la que podremos añadir el nombre de las series que contendrán los artículos de nuestra colección. Como se comentaba, la ventaja de hacerlo así es que no hacemos más compleja la estructura de categorías “principal” de nuestro blog y permite ser más flexible en la presentación del contenido.

La función register_taxonomy admite tres argumentos. El primero es el nombre de la taxonomía que queremos crear, en este caso series. El segundo es un array donde podremos indicar los tipos de entrada donde estará disponible la taxonomía. En este caso, sólo estará disponible en las entradas (post). Si quisiéramos compartir esta taxonomía con otros tipos de objeto o entrada (entradas personalizadas), habría que agregar un elemento al array con el nombre del objeto o la entrada según está registrada. El tercer argumento es un array donde pasar los argumentos a la función y que nos permitirán personalizar el funcionamiento de la categoría personalizada en nuestro sitio web.

Examinemos los argumentos que pasamos en el array que es donde encontraremos la clave para crear una categoría personalizada. Es absolutamente necesario estudiar bien la documentación de esta función (y de todas) para comprender las opciones que tenemos.

  • labels: Es una variable array bastante fácil de comprender. Son los nombres que le asignamos a las etiquetas que aparecen en los menús de WordPress.
  • hierarchical: Esta es importante porque permite diferenciar entre categorías y etiquetas. Si pasamos true, significa que la taxonomía responde al funcionamiento jerárquico que vemos en las categorías. En cambio, el valor false, le otorgará la funcionalidad descriptiva de las etiquetas y no será jerárquica. En nuestro caso, pasamos true porque queremos que se comporte como una categoría.
  • show_ui: Si pasamos true, indicamos que queremos que esté disponible en el panel de control del WordPress. Podríamos, aunque no es el caso, establecer permisos gracias al valor capabilities donde es posible gestionar los permisos asociados a la taxonomía. También podríamos con el valor public, establecer una taxonomía privada y así no exponer a los usuarios a los valores que lógicamente antes, tendríamos que crear.
  • show_admin_column: Similar a la anterior, este valor permite establecer si queremos que aparezcan los valores que asignamos a la taxonomía en los listados del panel de control.
  • query_var: Importante establecerla si queremos hacer consultas personalizadas sobre este variable.
  • rewrite: Esta nos permite personalizar el valor que aparece en el enlace permanente de nuestro sitio. Muy interesante también para conseguir direcciones limpias y comprensibles, además de favorecer el posicionamiento de nuestras páginas.

Una vez creada la taxonomía personalizada ya estará disponible en nuestro panel de control para poder asignarle a cada entrada la serie que previamente habremos creado desde el menú Series debajo de entradas. En la edición de la entrada, debajo de Etiquetas tendremos un “widget” similar al de Categorías donde asignar o crear una nueva categoría. Recomiendo crearlas antes para personalizar el slug y evitar direcciones muy largas. Si por casualidad no vieras este widget, revisa que esté activada la visualización desde Opciones de Pantalla (el desplegable que aparece arriba en la pantalla de edición).

Categoria personalizada en WordPress

Mostrar las categorías personalizadas en nuestra tema de WordPress

Una vez creamos una serie y la asignamos a las entradas correspondientes necesitamos que nuestra plantilla recoja esa información para el público. Para ello deberemos extraer los valores de la taxonomía en nuestra plantilla y en el caso de que se haya asignado mostrar la serie con un enlace a las entradas que integran la serie.

Aquí es donde existen las dos opciones que indicaba al principio. Se puede hacer con las funciones para extraer la taxonomía personalizada de una entrada o combinar un plugin de campos personalizados como Advanced Custom Fields para mejorar la experiencia del usuario. Otra ventaja de utilizar este plugin es que es fácil establecer condiciones para seleccionar la taxonomía, con lo que garantizamos que los datos introducidos sean correctos. Particularmente prefiero esta opción, aunque si no tienes instalado este plugin, entiendo que hacerlo sólo para esto, es algo excesivo.

Empezamos por la opción normal. Para ello en la plantilla correspondiente que utilice nuestro tema y acorde la jerarquía de plantillas WordPress localizamos el sitio donde queremos que aparezca esa información. Una vez localizada es cuestión de consultar si hay asignado un término a esa taxonomía. Para ello usaremos un código similar al siguiente. Es importante indicar que sólo se contempla una categoría personalizada serie por entrada.

En el código mostrado arriba se puede ver como extraemos gracias a la función get_the_terms() el objeto que contiene los valores de la taxonomía que buscamos. En este caso la taxonomía es series que es el nombre con el que hemos registrado la taxonomía. Tras una comprobación de posibles errores extraemos los valores que nos interesan (en este caso sólo uno) y así podremos disponer de esos valores para nuestra plantilla. Si queremos obtener el enlace para mostrar el archivo de las entradas contenidas en esa serie debemos usar la función get_term_link(). Gracias a que disponemos el ID de la taxonomía con la función anterior es fácil obtener el enlace y mostrarlo en nuestra plantilla. Como se puede comprobar hay que escapar todas las variables.

Para mostrar en el sitio web está información usaremos por ejemplo la plantilla single.php que es la específica para mostrar las entradas individuales de nuestro sitio. También habría que crear (en el caso de que no estuviera) una plantilla específica de archivo para mostrar las entradas para la serie. La plantilla en particular podría ser taxonomy.php o más específicamente taxonomy-series.php (atención al detalle de indicar el slug con el que se creó la taxonomía como sufijo de la plantilla).

Detalle plantilla taxonomía

Relacionar una taxonomía con una entrada con Advanced Custom Fields

Otra posibilidad muy recomendable es trabajar con el completísimo plugin Advanced Custom Fields para administrar las taxonomías en las entradas. El funcionamiento es idéntico al descrito anteriormente pero con la salvedad es que usamos un campo personalizado enlazado a la taxonomía que hemos creado. Las ventajas es que es más intuitivo y que podemos personalizar el comportamiento de la presentación y la lógica del campo. Por ejemplo podemos crear un condicional o limitar el número de elementos a seleccionar.

Campo relación taxonomia Advanced Custom Fields

Lo único que hay que hacer es crear un campo personalizado para las entradas y asignarle el tipo de Taxonomy. De esta forma podremos en la edición de la entrada escoger los valores incluidos en la taxonomía “series”. Como suele ser habitual la versión PRO de este plugin ofrece mucha más alternativas, pero la versión gratuita ya nos ofrece todo lo necesario para poder trabajar con este campo. El código es muy similar al anterior, y como se puede ver es simplemente extraer el valor de la taxonomía del campo personalizado.

Como indicaba la ventaja es que podemos fácilmente asignar una lógica a la hora de introducir los datos. Esto simplifica mucho el trabajo para la persona que edita la web, que no siempre es una persona que conoce los entresijos del código.