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:
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.
En cualquier caso si tienes alguna duda deja un comentario e intentaré echarte una mano.
photo credit: The Last Bookstore via photopin (license)
Me ha ido de fabula! Pero una pregunta… ¿ hay alguna forma de poder listar todos los temas? Ni que sea con un widget… Gracias.
Me alegro mucho de que te haya servido Jordi! Puedes echar un vistazo a este plugin:
https://wordpress.org/plugins/taxonomy-list-shortcode/
Hace tiempo que no se actualiza pero funciona. Te permite crear un shortcode de este tipo:
[taxonomy-list tax=”temas” cols=”3″]
Saludos!
Buenas! ¿Sabes si se podría hacer lo mismo pero en lugar de en la pagina de productos de woocomerce, en los portfolios de un tema? Lo estoy probando en la plantilla Virtue, pero no consigo que aparezca. En el backend si, pero en dl frontend no muestra nada…
En principio bastaría con cambiar “product” por el slug de tu portfolio a la hora de registrar la taxonomía:
register_taxonomy(‘autores’,’product’,…
Echa un vistazo al codex de WordPress para esta función
https://codex.wordpress.org/Function_Reference/register_taxonomy
Estupendo post:
A mi me valen las etiquetas por defecto de woocommerce-wordpress. No necesito añadir mas taxonomías aunque está bien guardar esta página por si acaso.
La cuestión es que, aunque inserto en su orden adecuado las etiquetas, en la página de producto me aparecen desordenadas. Un ejemplo:
conector esmalte 45º, conectores, conectores esmalte, módulos…
Y debería de ser
conector esmalte 45º, conectores esmalte, conectores, módulos…
Es solo un pequeño desorden pero no entiendo cual puede ser el motivo.
conector esmalte 45º – sería el producto
conectores esmalte – sería su categoría
conectores – sería la categoría genérica y
módulos – es la categoría base
Muchas gracias por tu tiempo y atención
Un saludo
Hola Paco, tuve que solucionar un caso parecido hace un tiempo y si no recuerdo mal usé este plugin:
https://es.wordpress.org/plugins/taxonomy-terms-order/
Dime si te ha funcionado! Saludos!
Hola en mi caso estoy hacendo una web en WordPress con Woocommerce para una librería y si creo una taxonomía denominada autor es interesante que se diferencie nombre y apellidos, y aparezcan separados por una coma, por ejemplo Steinbeck, John pero al hacerlo pone apellido y nombre por separado, con lo cual a la hora de hacer búsquedas no es eficiente porque hay autores con el mismo apellido o nombre y no se cómo se puede resolver este problema.
Hola Manuel, en ese caso necesitas crear taxonomías jerárquicas, como la que utilizo en el ejemplo para crear los temas.
HOla, el tutorial funciona perfecto.
Aquí la aplicación del código:
http://genealogia.cl/test_genealogia/product/revista-de-estudios-historicos-v/
Pero tengo una duda, quiero que las taxonomía aparezca tanto en la vista single del producto como en el listado de productos, por ejemplo:
http://genealogia.cl/test_genealogia/shop/
me gustaría que las taxonomias que creé aparecieran bajo la descripción corta del producto.
no logro dar con la ubicación.
me podrías dar una mano?
saludos y quedo atento
Diego
Hola Diego, lo siento de momento no lo tengo. Cuando encuentre la frma de hacerlo actualizaré el post.
Saludos.
Hola! Una pregunta. Estoy usando el theme Virtue para una librería. Necesito incluir el autor como tu explicas. Copio y pego en functions.php del tema, pero cuando quiero salvarlo me tira un error y no puedo seguir. Por más que borre todo lo que escribí no me permite. Tengo que cargar nuevamente con el ftp el archivo functions.php en el servidor. Qué estaré haciendo mal? O tal vez Virtue no acepta estos agregados.
Otra pregunta: cómo puedo hacer para cambiar el órden en las características del producto? Por ejemplo que se vea Título, Descripcion breve, autor…
Y otra pregunta más: Cómo hago para cambiar SKU y que pueda poner ISBN y categoría por colección?
Gracias y perdón por tantas preguntas.
Hola Carlos, para incluir código en el archivo functions.php es recomendable utilizar un tema hijo o en su defecto crear un plugin. Hecha un vistazo a este post de ayudawp.
Las demás preguntas no te las puedo responder por aquí, necesitas código a medida para hacer los cambios que me comentas!
Saludos.
buenas, me gustaría crear en la subida del producto unas categorías mas ordenadas y mas avanzadas, por ejemplo si tengo 8 tipos de productos y cada una de ellas tienen unas subcategorias me gustaría que por ejemplo al seleccionar la categoría solo aparezcan las subcategorias de esa categoría, ¿alguna idea de como podría hacer algo así? un saludo!
Hola Ruben, WooCommerce ya está preparado para eso que comentas. Debes ir a WooCommerce > Ajustes > Productos > Mostrar > Visualización de categoría por defecto > Seleccionar Mostrar subcategorías
Un saludo.
Buenas tardes! El tutorial es muy claro pero aún así no logro visualizar el cambio. he leído en la última parte del post que es posible que el tema esté bloqueando el cambio. Me podrías indicar donde hago el cambio? Yo solo necesito una nueva taxonomia que sea MARCAS. Muchas gracias!
Hola Ruben, en tu tema tendrás una carpeta llamada woocommerce donde estan los archivos que sobreescriben las funcionalidades de WooCommerce. El archivo que muestra la página de producto es single-product.php sin embargo puede que el autor del tema haya cambiado el hook woocommerce_single_product_summary en otra parte del tema… Es complicado de explicar 🙁 Si es un tema de pago puedes pedirle ayuda al desarrollador. Suerte!!
hola ¿cómo lo puedo mostrar en el side bar mediante widget para que los usuarios hagan la búsqueda?
gracias
Hola Juan, no entiendo bien tu pregunta… Por defecto tienes un widget para buscar productos y que puedes poner en un sidebar desde Apariencia > Widgets
Hola, genial tu explicación. Logré crear en el Backend los apartados de las taxonomías que me interesa crear, me aparecieron en la edición producto para asignarlas, pero en el frontend, en el producto como tal, no me aparecen ni con el código que indicas para que aparezca. Para no tocar directamente el código lo esto haciendo a través del plugin My functions. ¿Es posible que esta implementación haya cambiado con la nueva versión de Woocommerce? Tengo la 3.1 y antes podía incluso entrar a editar la plantilla directamente, ya no me sale. ¿Podrías guiarme?. Quiero crear una librería, me interesa: autor y editorial. Sólo eso.
Hola Catalina, en tu caso es posible que el tema que utilices esté modificando la página de producto de WooCommerce y por ello no funcione mi código. No puedo darte una solución fácil, habría que echar un vistazo a tu tema. Saludos.
Hola tío eres un súper máquina, espero me puedas ayudar. En mi caso estoy maniatado porque estoy haciendo una tienda online con Dropshopping en la que hay de momento 19500 productos y varias categorías con sub categorías, tengo dos CSV del proveedor uno con productos y otro con categorías, he subido los productos del CSV pero el CSV de las categorías me deja caos por no saber si se suben por el mismo canal, osea yo estoy utilizando El “wp all import” en la sesión de productos subo los productos, pero no hay ninguna sesión para subir CSV de Categorías, la cosa es que ya tengo los 1900 pero sin categorías, porqué, sencillo… Una de las categorías es, Perfumes, aún categoría Calvin Klein, y el producto por ejemplo: CK one 100ml. Tengo los productos y en el CSV de categoría viene códigos y si lo importo se me llena el apartado categorías de categorías de esos números y no las marcas de los perfumes. Que hago, me estoy volviendo loco, espero me eches una mano.
Hola Juan Antonio, disculpa por responderte tan tarde. Puedes importar las categorías utilizando el mismo plugin. Luego puedes importar los productos y con el editor de funciones puedes transformar el número de cada categoría con su nombre y así relacionarla con su producto de forma automática. Es un poco complicado para explicar por aquí, si te parece ponte en contacto conmigo y vemos si puedo ayudarte.
Saludos.
Realmente maravilloso. Funciona estupendamente. Muchas gracias! Solo tengo una pregunta: ¿cómo se puede modificar el tamaño del font, color… en general el estilo de las taxonomías que aparecen en la página del producto?
Gracias Stefano, solo es cuestión de aplicar un poco de código CSS. Aunque explicar eso es mucho más difícil!
Saludos.