Publicado el

Nuevas taxonomías en Productos WooCommerce 2020

Vamos a agregar taxonomías que ayudarán en el catálogo y archivo de nuestros productos, actualmente lo hemos aplicado en nuestras tiendas de libros. 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:

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:

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.

Deseo guardar o compartir en mis redes: