WooCommerce trae por defecto tres taxonomías para ordenar tus productos:

  • Categorías de producto
  • Etiquetas de producto
  • Atributos

Estas tres taxonomías suelen ser suficientes para poner orden a tu tienda online, pero en algunos casos puedes que necesites algo más.

Un ejemplo que ilustra bien esta situación es una tienda de libros. En este caso es posible que necesites clasificar los libros por temas, autores, colecciones, editoriales etc.

En realidad muchas tiendas online pueden beneficiarse de añadir taxonomías extra a sus productos, ya que puede ayudar a tus clientes a navegar por tu inventario y encontrar más fácil lo que necesitan.

Taxonomías en WordPress y WooCommerce

WordPress trae por defecto la capacidad de crear taxonomías con unas cuantas líneas de código. Tan solo debes tener en cuenta los dos tipos de taxonomías que puedes crear:

Taxonomías jerárquicas

Al igual que las categorías que trae por defecto WordPress, permiten crear familias y subfamilias. Siguiendo con el ejemplo de la tienda de libros, pueden servirte para crear un gran árbol de géneros y subgéneros literarios.

Taxonomías no jerárquicas

Al igual que las etiquetas que trae por defecto WordPress, sirven para clasificar artículos de los que no resultan interesante que descuelguen subfamilias. Una vez más con el ejemplo de los libros pueden servirte perfectamente para clasificar tu libros por editoriales o autores.

Advertencia: WordPress utiliza internamente las comas para separar este tipo de taxonomías. Así que, si necesitas utilizar comas en tu taxonomía (por ejemplo: Apellido, Nombre) es mejor utilizar taxonomías jerárquicas.

Cómo añadir taxonomías a WooCommerce

Puedes añadir el siguiente código a tu archivo functions.php

o bien crear un plugin de WordPress 

En este ejemplo vamos a crear taxonomías para temas y autores, pero puedes reutilizar el código para crear otras taxonomías solo ten en cuenta que no se puede definir dos funciones con el mismo nombre.

Primero definimos una taxonomía jerárquica para crear una clasificación por temas:

// Primero vamos a crear la taxonomía de temas o géneros literarios
// Añadimos nuestra función al hook init
add_action( 'init', 'create_temas_hierarchical_taxonomy', 0 );

//definimos la función
function create_temas_hierarchical_taxonomy() {

// Añadimos el nombre de la taxonomía en las diferentes formas que pide WordPress

  $labels = array(
    'name' => _x( 'Temas', 'taxonomy general name' ),
    'singular_name' => _x( 'Tema', 'taxonomy singular name' ),
    'search_items' =>  __( 'Buscar temas' ),
    'all_items' => __( 'Todos los temas' ),
    'parent_item' => __( 'Tema padre' ),
    'parent_item_colon' => __( 'Tema padre:' ),
    'edit_item' => __( 'Editar tema' ), 
    'update_item' => __( 'Actualizar tema' ),
    'add_new_item' => __( 'Añadir nuevo tema' ),
    'new_item_name' => __( 'Nombre del nuevo tema' ),
    'menu_name' => __( 'Temas' ),
  );     

// Registramos la taxonomía para 'product' el custom post type utilizado por WooCommerce
// Definimos la taxonomía como jerárquica para poder descolgar de ella subtemas

  register_taxonomy('temas',array('product'), array(
    'hierarchical' => true,
    'labels' => $labels,
    'show_ui' => true,
    'show_admin_column' => true,
    'query_var' => true,
    'rewrite' => array( 'slug' => 'tema' ),
  ));

}

En este momento si creas o editas un producto de WooCommerce debes ver una nueva metabox como esta:

clasificar productos en WooCommerce con taxonomias

Después de crear cada taxonomía es muy posible que necesites volver a guardar tu configuración de enlaces permanentes: Ajustes >> Enlaces permanentes >> Guardar cambios

Ahora vamos a crear una categoría no jerárquica para clasificar los libros por autores:

//Ahora vamos con los autores, taxonomía no jerárquica
add_action( 'init', 'create_autores_nonhierarchical_taxonomy', 0 );

function create_autores_nonhierarchical_taxonomy() {

// Labels part for the GUI

  $labels = array(
    'name' => _x( 'Autores', 'taxonomy general name' ),
    'singular_name' => _x( 'Autor', 'taxonomy singular name' ),
    'search_items' =>  __( 'Buscar autores' ),
    'popular_items' => __( 'Autores populares' ),
    'all_items' => __( 'Todos los autores' ),
    'parent_item' => null,
    'parent_item_colon' => null,
    'edit_item' => __( 'Editar autor' ), 
    'update_item' => __( 'Actualizar autor' ),
    'add_new_item' => __( 'Añadir nuevo autor' ),
    'new_item_name' => __( 'Nombre del nuevo autor' ),
    'separate_items_with_commas' => __( 'Separa los autores con comas' ),
    'add_or_remove_items' => __( 'Añadir o eliminar autores' ),
    'choose_from_most_used' => __( 'Elije ente los autores más utilizados' ),
    'menu_name' => __( 'Autores' ),
  ); 

// Now register the non-hierarchical taxonomy like tag

  register_taxonomy('autores','product',array(
    'hierarchical' => false,
    'labels' => $labels,
    'show_ui' => true,
    'show_admin_column' => true,
    'update_count_callback' => '_update_post_term_count',
    'query_var' => true,
    'rewrite' => array( 'slug' => 'autor' ),
  ));
}

Mostrar las taxonomías en la página de producto

Pero todo esto no tendría sentido si no mostramos las taxonomías en las páginas de producto. Con el siguiente código se muestran los temas y los autores justo debajo de la descripción corta del producto:

// Ya están creadas las taxonomías, ahora toca mostrarlas en las páginas de producto
// Mostrar el tema en la página de producto

add_action( 'woocommerce_single_product_summary', 'show_product_temas', 25 );

function show_product_temas(){
    
    the_terms( $post->ID, 'temas', 'Temas: ', ', ', '<br />' ); 
}

// Mostrar el autor en la página de producto

add_action( 'woocommerce_single_product_summary', 'show_product_autores', 26 );

function show_product_autores(){
    
    the_terms( $post->ID, 'autores', 'Autores: ', ', ', '<br />' ); 
}

El resultado sería algo como esto:

clasificar los productos de woocommerce con taxonomías de productos

Mostrar descripción de la taxonomía

Vamos a suponer que quieres mostrar una pequeña biografía de cada autor cuando alguien haga clic en su nombre y que luego se muestren todos sus libros.

En Productos > Autores puedes editar cada uno de los autores y añadirle una descripción.

Consejo: Puedes utilizar el plugin CategoryTinymce para añadir fotos y formatear el texto cómodamente en la descripción de cada taxonomía.

Ahora vamos a añadir el código para que se muestre la descripción en la página de cada autor:

// Vamos a mostrar una breve biografía en la página de cada autor con la ayuda del plugin CategoryTinymce

add_action( 'woocommerce_archive_description', 'show_autor_description' );
        
function show_autor_description(){
    
    if (is_tax()){
        
        if (is_tax('autores'))
            
            { echo term_description() . "<hr /><h2>Sus últimos libros:</h2>"; }

    } 
 
}

He probado este código con varios temas de WordPress y funciona correctamente. Sin embargo el tema que utilices puede sobreescribir alguna de las funciones de WooCommerce y no mostrar correctamente las taxonomías. En este caso toca editar los templates de tu tema para que todo se muestre correctamente.

En cualquier caso si tienes alguna duda deja un comentario e intentaré echarte una mano.


photo credit: The Last Bookstore via photopin (license)