¿Cómo crear taxonomías en WordPress?

Cuando hablamos de taxonomías todo las personas recuerdan fácilmente las que WordPress instala por defecto para sus entradas: categorías y etiquetas. Pero también tenemos la posibilidad de crear nuestras propias taxonomías mediante código o plugins para relacionarlas con los Custom Post Types de nuestros proyectos.

¿Que significa el término taxonomía?

Os voy a contar un secreto. Yo creía que las taxonomías eran algo propio de la informática. De hecho escuché de ellas por primera vez a través de WordPress, pero en realidad es un término asociado a la biología para clasificar los reinos animales, vegetales y minerales . Este término nació con el biólogo sueco Carl Linnaeus, a quienes llaman «El padre de la taxonomía moderna».

La taxonomía es la clasificación u ordenación en grupos de cosas que tienen características comunes. En WordPress utilizamos las taxonomías para agrupar y ordenar Post o Custom Post Types.

Por ejemplo: Si tenemos un Custom Post Type «Libros» podríamos tener una taxonomía asociada con los siguiente valores: drama, novela, ficción, terror, etc. De esta manera podemos agrupar u ordenar distintos libros bajo una misma taxonomía «Género».

Sobre este tema di mi primera charla en la WordCamp Bilbao 2016:

Ahora que ya tenemos una primera noción sobre las taxonomías vamos a ver cómo podemos crearlas. Describiré un primer ejemplo utilizando el plugin Custom Post Type UI para aquellas personas que no quieran meterse en líos de código de programación. Y en segundo lugar crearemos la taxonomía según los lineamientos del Codex de WordPress.


Video Tutorial


Crear taxonomías con un plugin

Para crear una taxonomía utilizaremos el plugin Custom Post Type UI el cual debemos tener instalado y activado en nuestro WordPress. Luego haremos click en el menú CPT UI » Add/Edit Taxonomies.

custom post type ui crear taxonomia
Formulario para crear una taxonomía usando el plugin «Custom Post Type UI».

Vamos a ver en detalle cada campo de este formulario:

CampoFunción
Taxonomy Slug
(obligatorio)
 El nombre clave que le vamos a dar a la taxonomía. Solo se aceptan caracteres alfanuméricos latinos en minúsculas, los espacios tienen que ser reemplazados por guiones o guiones bajos.
Plural Label
(obligatorio)
Nombre en plural que se utilizará en el menú de WordPress.
Singular Label
(obligatorio)
Nombre en singular que se utilizará en distintos links y páginas del administrador de WordPress.
Attach to Post Type
(obligatorio)
Este campo nos permite asociar la taxonomía a un tipo de Post. En el imagen vemos un Custom Post Type «Coches» que hemos creado en el artículo «Crea tus Custom Post Types sin programar«.
Al menos debemos indicar un tipo de post.

Al igual que en la creación de Custom Post Types podemos detallar las traducciones de las etiquetas que se mostrarán en el administrador de WordPress completando el segundo bloque de campos llamado «Additional Labels»:

custom post type ui traducciones taxonomia
Formulario para la traducción de etiquetas del plugin «Custom Post Type UI».

Veamos la descripción de algunos de los campos:

CampoFunción
Menu NameNombre para el menú del administrador de WordPress.
All ItemsTexto para el enlace de «todos los ítems» presente en el submenú de la taxonomía.
Add NewTexto para agregar una nueva taxonomía.
Add New ItemTexto utilizado en la esquina superior izquierda en el formulario de alta de la taxonomía.
Edit ItemTexto utilizado en la esquina superior izquierda en el formulario de edición de la taxonomía.
Search ItemTexto utilizado en el botón de búsqueda en la página de listado de taxonomías.

Una vez que aceptamos estos cambios podemos ver que al dar de alta o editar un Post (al que hemos asociado la taxonomía) aparecerá un nuevo menú para registrar las taxonomías.

formulario alta taxonomia no jerarquica
Formulario de taxonomías no jerárquicas.
custom post type ui taxonomias configuraciones

El formulario como pueden ver es idéntico al utilizado para las «etiquetas» en las entradas. Esto se debe a que hemos creado una taxonomía «no jerárquica«. Si necesitamos que la taxonomía se comporte como las «categorías» de las entradas debemos modificar la opción «Hierarchical» a true en la tercer sección de campos llamada «Settings«.


Creando taxonomías por programación

Para crear una taxonomía por programación deberás agregar el siguiente código en tu fichero functions.php de tu tema o bien en el fichero principal del plugin.

<php
// Función para crear una taxonomía
function crear_taxonomia_jerarquica() {

    // Definimos un array para las traducciones de la taxonomía
    $etiquetas = array(
        'name' => __( 'Géneros' ),
        'singular_name' => __( 'Género' ),
        'search_items' =>  __( 'Buscar géneros' ),
        'all_items' => __( 'Todos los géneros' ),
        'parent_item' => __( 'Género padre' ),
        'parent_item_colon' => __( 'Género padre:' ),
        'edit_item' => __( 'Editar género' ), 
        'update_item' => __( 'Actualizar género' ),
        'add_new_item' => __( 'Agregar un nuevo género' ),
        'menu_name' => __( 'Géneros' ),
    ); 	


    // Función WordPress para registrar la taxonomía
    register_taxonomy(
        'generos',
        array('post'), // Tipos de Post a los que asociaremos la taxonomía
        array(
            'hierarchical' => true, // True para taxonomías del tipo "Categoría" y false para el tipo "Etiquetas"
            'labels' => $etiquetas, // La variable con las traducciones de las etiquetas
            'show_ui' => true,
            'show_admin_column' => true,
            'query_var' => true,
            'rewrite' => array( 'slug' => 'genero' ),
        )
    );

}
add_action( 'init', 'crear_taxonomia_jerarquica', 0 );

Podemos encontrar más detalles sobre la configuración de los parámetros de la función register_taxonomy() en el Codex de WordPress.


Mostrar los términos de taxonomías de un Post

Una vez que hayamos asignado algunos términos a un post podremos mostrarlos en el Frontend utilizando el siguiente código dentro del loop y en algunas de las distintas plantillas que conforman nuestro tema (index.php, single.php, archive.php, etc).

<php
/*
    Parámetros:
    $id => ID del post. 
    $taxonomy => nombre de la taxonomía que queremos mostrar.
    $before (opcional) => Texto para mostrar antes de los términos.
    $separator (opcional) => Texto que utilizaremos para separar los términos
    $after (opcional) => Texto para mostrar después de los términos.
*/
the_terms($post->ID, 'generos', '',',');

Conclusión

Hay pilares importantes para dominar la estructura de información de cualquier WordPress y las taxonomías es una de ellas (junto con los Custom Post Types y los campos personalizados). Analiza en detalle tu proyecto web y crea las taxonomías jerárquicas o no jerárquicas que creas convenientes para sacar el mayor provecho al CMS.


¿Qué te pareció el artículo?
No molaPobreMolaMuy bueno¡Excelente! (11 votos, promedio: 5,00 de 5)
Cargando...
Mauricio Gelves
Mauricio Gelves es Lic. en Informática y trabaja como Consultor Web Freelance con su marca personal MauGelves. Se especializó en WordPress para ofrecer soluciones personalizadas y rentables a medianas y largas empresas. Es Nómade Digital desde el año 2015, actividad que combina sus dos principales pasiones: la informática y los viajes, y refleja sus experiencias a través de sus hobbies audiovisuales en Instagram y YouTube.
10 Pasos para ser Freelance - eBook Gratuito

10 pasos para convertirte en Freelance

Descarga en forma totalmente gratuita mi eBook en donde explico los 10 pasos que he dado para convertirme en Freelance.

Ingresa tu email y recibe en tu bandeja de correo el enlace para descargarte el eBook.

(Te doy mi palabra que solo enviaré un email al mes con todas mis novedades)


21 thoughts on “¿Cómo crear taxonomías en WordPress?”

  1. Hola Mauricio:
    Tengo una duda con la siguiente parte de crear taxonomía por programación.

    array(‘post’), // Tipos de Post a los que asociaremos la taxonomía

    En la linea anterior si es una taxonomía para un post type debería poner dentro del array el nombre del post type con el que fue registrado, ósea si registre un post type llamado «pedrito_53» debería poner dentro del array «pedrito_53»? ósea así
    array(‘pedrito_53’)

    ósea tengo esta duda porque en el codex de wordpress que tu pasaste ponen en uno de los ejemplos el comentario de:

    // create two taxonomies, genres and writers for the post type «book».

    entonces en la función register_taxonomy ponen así:

    register_taxonomy( ‘genre’, array( ‘book’ ), $args );

    Entonces teorizo que ese ‘book’ es un post type que se registro con ese nombre con la función register_post_type()?.

    Espero que hayas entendido mi duda o espero haberme explicado bien.

    Saludos

Deja una respuesta

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