Mostrar categorías en orden jerárquico en vez de alfabético

Usualmente en los listados de artículos, páginas de categorías y taxonomías personalizadas se muestran las categorías a las que pertenece cada post, separadas por comas y vinculadas a la página de la categoría que corresponde.

También suele estar presente en las páginas de las entradas como tal.

La función que ejecuta este listado es the_category.

Este listado tiene un orden alfabético que puede no ser conveniente cuando la entrada pertenece a varias categorías con un orden jerárquico, es decir categorías madre e hija.

Una situación en la que es preferible mostrar el orden jerárquico en vez del alfabético es la geografía: queremos organizar nuestras entradas o tipos de entrada personalizados (custom post type) en categorías de Zona/Región/Ciudad, para nuestro ejemplo: Costa/Atlántico/Soledad. Usando the_category la página nos mostrará las categorías así: Atlántico, Costa, Soledad.

Para cambiar este comportamiento podemos usar el siguiente código dentro de nuestra plantilla, en reemplazo de the_category, en los archivos archive.php, category.php, single.php o index.php:

<?php
   $cat_Id = get_the_category($post->ID);
   $categories = get_category_parents( $cat_Id[0], TRUE, ' > ' );
   $title = get_the_title();
   printf( '%1$s <span>en %2$s</span>', get_the_date(), $categories . $title );
?>

Así, nuestro listado se mostrará como una navegación de miga de pan: Costa > Atlántico > Soledad.

Este código muestra además el título de la entrada sin vincular al final del listado.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

19 + 13 =