En ocasiones necesitamos organizar nuestros productos por criterios más allá que por categorías y etiquetas.
Imaginemos que estamos montando una academia online, en la que queremos que los cursos se puedan organizar por el profesor, y permitir listar los cursos de un determinado profesor.
Modelo de datos
Para ello vamos a crear una taxonomía ‘teacher’, que nos permita dicha agrupación.
En principio, como atributos necesitaremos:
- Nombre: El nombre y apellidos del profesor.
- Descripción: Una descripción sobre él, que corresponderá al content principal.
- Imagen: La fotografía del profesor
El código para la creación de dicha taxonomía sería:
// Teacher
$labels = array(
'name' => _x( 'Profesor', 'mi-dominio' ),
'singular_name' => _x( 'Profesor', 'mi-dominio' ),
'search_items' => __( 'Buscar profesores', 'mi-dominio' ),
'popular_items' => __( 'Profesores frecuentes', 'mi-dominio' ),
'all_items' => __( 'Todos los profesores', 'mi-dominio' ),
'parent_item' => null,
'parent_item_colon' => null,
'edit_item' => __( 'Editar profesor', 'mi-dominio' ),
'update_item' => __( 'Actualizar profesor', 'mi-dominio' ),
'add_new_item' => __( 'Añadir nuevo profesor', 'mi-dominio' ),
'new_item_name' => __( 'Nuevo nombre de profesor', 'mi-dominio' ),
'separate_items_with_commas' => __( 'Separar profesores por comas', 'mi-dominio' ),
'add_or_remove_items' => __( 'Añadir o eliminar profesor', 'mi-dominio' ),
'choose_from_most_used' => __( 'Elegir entre los profesores más frecuentes', 'mi-dominio' ),
'menu_name' => __( 'Teachers', 'mi-dominio' ),
);
register_taxonomy( 'teacher', 'product', array(
'hierarchical' => false,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'show_in_rest' => true,
'rewrite' => array( 'slug' => 'teacher', 'hierarchical' => false ),
));
En la definición de la taxonomía, cabe destacar el custom post type al que se le asocia, que en nuestro caso es para ‘product’, que es como se definen los productos en Woocommerce.
Vistas
Ya tenemos nuestro modelo de datos definido e implementado, pasamos a las vistas que necesitaremos.
Al ser una forma de aglutinar elementos, queda claro que su vista debería ser una forma de listarlos, o lo que se suele denominar en WordPress, ‘archive’.
Si nos fijamos en la jerarquía de plantillas proporcionada por WordPress.

Nuestra nueva taxonomía directamente tendría una vista preparada, ya que por lo general cualquier tema dispone de un archivo archive.php, o si me lo pones más difícil, un index.php Que nuestro tema dispone de un taxonomy.php, pues será usado.
Pero si queremos dar cierto toque estético a nuestra nueva taxonomía, ya que al tratarse de profesores, quizás queramos añadir su ficha biográfica, o experiencia docente, bastará con crear un taxonomy-teacher.php, copiando por ejemplo del taxonomy.php o archive.php existente, y que modificaremos a nuestro antojo.
Y de esta forma tan sencilla hemos creado una nueva forma de organizar los productos de nuestra tienda, por algún atributo común, creando incluso su propia vista.