Advertisement
  1. Code
  2. WordPress

Archivos de Taxonomía: Listar las Entradas según los Términos de Taxonomía

by
Read Time:8 minsLanguages:

Spanish (Español) translation by Eva Collados Pascual (you can also view the original English article)

Final product imageFinal product imageFinal product image
What You'll Be Creating

Por defecto, WordPress crea archivos que listan todas tus entradas en orden inverso. Si los usuarios están buscando entradas pertenecientes a una cierta categoría o con un término de taxonomía concreto, tendrán que visitar la página de archivo de dicha categoría o término.

Pero, ¿y si deseases hacer la página de archivo principal de un tipo de entrada personalizada más útil y fácil de usar para el usuario? En este tutorial te mostraré cómo crear una página de archivo para un tipo de entrada personalizada que muestre únicamente las entradas de ese tipo y categorizadas según una taxonomía, de manera que en lugar de listar un largo listado, los usuarios verán una lista para cada término de taxonomía.

Lo Que Necesitarás

Para seguir este tutorial necesitarás una instalación de WordPress para el desarrollo y un editor de código. Crearás un tema hijo para el tema twentyfourteen, así tendrás que tener instalado éste último (debería estarlo por defecto).

Te voy a enseñar como crear un tema hijo, pero si te bloqueas, echa un vistazo a la hoja de estilo que viene con el paquete de ejemplos de código para este tutorial.

1. Comienzo: Registrar el Tipo de Entrada y la Taxonomía

Según mi experiencia, esta técnica se necesita con mayor frecuencia para crear tipos de entradas personalizadas y taxonomías que para entradas, categorías o etiquetas estándar, así que empezaré registrando un tipo de entrada y una taxonomía.

Nota: Yo estoy usando el mismo tipo de entrada ‘animal’ que registré en un tutorial anterior sobre cómo crear un archivo basado en imágenes. Si quieres llevar las cosas un poco más allá, podrías combinar la técnica de ese tutorial con la que te estoy mostrando aquí y mostrar la lista de tu término de taxonomía acompañado de imágenes.

En el archivo functions.php de tu tema, añade el siguiente código para registrar el tipo de entrada:

Después, añade el código que registra la taxonomía:

Una vez hayas hecho esto, añade algo de información. Aquí abajo puedes ver la información que yo he añadido junto con algunos términos de taxonomía aplicados. No pretendo ser muy exacto en mis terminología en lo que respecta a las familias de los animales de manera que, por favor, ¡no hagas ningún comentario si he cometido algún fallo!

2. Configurar la Plantilla para los Archivos

El siguiente paso consiste en crear una plantilla para el nuevo tipo de entrada. En tu tema, crea un nuevo archivo llamado archive-animal.php.

Como este es un tema hijo de twentyfourteen, la plantilla del archivo necesitará el código copiado de dicho tema para contener el loop personalizado que vas a crear. Así que añade lo siguiente a la plantilla de tu archivo:

Nota: Si estás trabajando con tu propio tema, copia el código que contendrá el loop del archivo o el index (archive.php o index.php) de tu propio tema.

3. Organizar la Plantilla de los Archivos: Extraer los Términos de Taxonomía

Para que tu archivo pueda mostrar los animales según términos de la taxonomía, el siguiente paso consiste en extraer esos términos.

En tu nuevo archivo de plantilla, debajo de la etiqueta de cierre </header> (o bajo la parte que abre el código que envuelve el loop si estás usando tu propio tema), extrae los términos usando get_terms():

Observa que he usado aquí dos parámetros:

  • orderby – esto te permite especificar el orden de los términos mostrados. Yo he usado count como valor de manera que el término con mayor cantidad de entradas se mostrará en primer lugar, pero podrías ordenarlos por nombre o por ID – si lo dejas vacío, WordPress los ordenará por nombre. Consulta la página del Codex en get_terms() para conocer más detalles.
  • hide_empty - le indica a WordPress que no extraiga ningún término que no tenga ninguna entrada asignada. Te ahorra el tener que comprobar más adelante si tu consulta tiene entradas.

4. Rellenar la Plantilla de Archivo: Definir la Consulta

Una vez hecho esto, usas foreach() para indicarle a WordPress que pase cada uno de estos términos y ejecute una consulta que debes definir. Bajo el código que acabas de añadir, inserta lo siguiente:

Esto le indica a WordPress que aborde cada término, y después define la consulta que tiene que ejecutar cada vez. Los argumentos para la consulta incluyen el tipo de entrada y el término en la taxonomía ‘animal_cat’, que es el valor de la variable $term.

5. Rellenar la Plantilla de Archivo: Añadir el Loop

Habiendo definido tu consulta, tienes que añadir un loop. Primero, extrae el nombre del término de la consulta como titular. Debajo de la línea que empieza con $query pero dentro de los corchetes de la declaración foreach, añade esta línea:

Después, añade el código que contendrá tu lista de entradas:

Ahora, dentro de la lista, añade tu loop:

Como puedes ver, este es un loop bastante claro que mostrará el título de cada entrada dentro de un enlace que dirige a la entrada completa, y que además no muestra ningún contenido. Si quisieras podrías añadir un extracto o una imagen destacada.

Por último, resetea la consulta usando wp_reset_postdata() bajo la línea que lee echo '</ul>';

El Loop Completo

Este es el aspecto que debería tener tu consulta y tu loop:

Por último, guarda tu plantilla y visualiza la página de archivo de tu tipo de entrada. Verás que lista tus entradas por término de taxonomía en lugar de hacerlo mediante una única y larga lista.

Resumen

Esta técnica es útil cuando quieres que tus visitas sean capaces de ver rápidamente datos categorizados sin tener que buscar entre varias páginas de archivo – lo reúne todo en un mismo sitio pero mejor organizado para una mayor comodidad. Aquí tienes algunas ideas sobre cómo podrías adaptar este técnica y llevarla más allá:

  • Invoca categorías o etiquetas en lugar de términos. Para hacer esto, podrías usar get_categories() o get_tags().
  • En lugar de crear un archivo personalizado para un tipo de entrada, usa esta técnica en tu archivo index.php para mostrar las entradas según categoría, etiqueta o término de taxonomía.
  • En lugar de ejecutar un loop para cada término, ejecuta dos: el primero podría mostrar las entradas más recientes pertenecientes a ese término al completo y el segundo podría mostrar una lista con todas las demás entradas. Usa posts_per_page y offset en los argumentos de tu consulta para conseguirlo – observa los detalles sobre cómo funciona esto en la página del Codex para WP_Query.
  • Usa posts_per_page para limitar el número de entradas mostradas de manera que cada lista tenga la misma longitud. Podrías combinar esto con la aplicación de estilos para mostrar las listas una junto a otra.
  • Para cada término, añade un enlace hacia la página de archivo del término al final de la lista de entradas - esto es particularmente útil si no estás mostrando todas las entradas de tu lista. Usa get_term_link() para hacer esto.
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.