¿Qué son las taxonomías en WordPress y cómo se registran?
WordPress, la plataforma de creación de sitios web más popular, permite organizar eficazmente el contenido a través de las taxonomías. Aparte de las categorías y etiquetas predeterminadas, ofrece la opción de crear taxonomías personalizadas mediante la función register_taxonomy. Este recurso es vital para crear diferentes interfaces de visualización según el tipo de taxonomía.
Para registrar una taxonomía en WordPress:
Abre el archivo functions.php de tu plantilla.
Crea una función nueva para registrar la taxonomía utilizando register_taxonomy.
En esta función, define los argumentos en un array con:
Hierarchical: true para permitir subcategorías.
Labels: nombres en plural y singular para visualizar en el administrador.
Show_in_menu: true para mostrar en el menú de navegación.
Rewrite: especificaciones para personalizar las URL.
Registra la taxonomía con los argumentos definidos.
functionregister_taxonomia_producto(){$args=array('hierarchical'=>true,'labels'=>array('name'=>'Categorías de Productos','singular_name'=>'Categoría de Producto'),'show_in_menu'=>true,'rewrite'=>array('slug'=>'categoria-productos'),);register_taxonomy('categoria_productos','producto',$args);}
¿Cómo implementar y utilizar taxonomías personalizadas?
Para hacer uso de la taxonomía creada, es esencial enlazar su registro a un evento en la construcción de la plantilla, como el init. Esto se logra usando la función add_action.
add_action('init','register_taxonomia_producto');
Una vez registrada, se pueden crear categorías dentro de la nueva taxonomía, como "Indumentaria" y "Souvenirs", y asignarlas a los productos. Esto mejora la visibilidad y organización del contenido.
Para gestionar categorías en productos:
Accede al administrador de WordPress.
Crea categorías dentro de la nueva taxonomía.
Asigna productos a estas categorías utilizando la edición masiva para ahorrar tiempo.
¿Cómo mejorar la experiencia del usuario con taxonomías y productos relacionados?
La implementación de taxonomías no solo organiza el contenido, sino que también optimiza la experiencia del usuario al mostrar productos relacionados en categorías específicas. Para lograr esto, WordPress ofrece funciones que permiten personalizaciones en consultas y búsquedas.
Por ejemplo, para mostrar productos relacionados dentro de la misma categoría puedes usar:
wp_get_post_terms: para obtener los términos asociados a un producto.
Modificar el loop de productos relacionados para filtrar por la taxonomía y término.
Este enfoque no solo enriquece la organización del contenido, sino que también ofrece al usuario productos más relevantes, mejorando la experiencia y posiblemente aumentando las conversiones. La personalización constante y la mejora de la estructura del sitio son pasos esenciales para crear un sitio web eficiente y atractivo.
Anímate a seguir explorando y experimentando con nuevas funcionalidades de WordPress para aprovechar al máximo esta herramienta.
Registro de Taxonomías Personalizadas en WordPress
cómo puedo excluir el producto actual de productos relacionados? Me parece redundante que se muestre el mismo producto como producto relacionado. Gracias!
Hola esteban!
Para poder evitar el post actual en el llop de productos relacionados tenés que incorporar este nuevo argumento:
'post__not_in'=>array($ID_producto_actual)
El post__not_in recibe un array con IDs de posts y evita incluirlos en el loop.
Saludos!
Gracias @whoisnegrello, funcionó perfecto!
Si a alguien mas le interesa, así me quedó
¿Qué es una taxonomía y cómo se registra una nueva?
Wordpress nos provee las Taxonomías para poder ordenar el contenido de nuestro sitio. Ya vienen algunas taxonomías registradas por defecto, pero también, nos deja registrarlo a través de un hook y function.
register_taxonomy() → Sedebe crear un registro en el que se le asignan los tipos de posts que deberá contener.
Además podemos desarrollar distintas interfaces por taxonomy, sería así:
taxonomy-posttype-nombre.php
taxonomy-posttype.php
taxonomy.php
Así registramos una Taxonomy en el archivo functions.php
<?php/** -------------------------------
* Register Taxonomy
* -------------------------------- */functionpgRegisterTax(){$args=['hierarchical'=>true,'labels'=>['name'=>'Categorías de productos','singular_name'=>''],'show_in_nav_menu'=>true,'show_admin_column'=>true,'rewrite'=>['slug'=>'categoria-productos']];register_taxonomy('categoria-producto',['producto'],$args);}add_action('init','pgRegisterTax');
Y para hacer un Query y filtrar por una taxonomía en específico, lo hacemos así en los argumentos de la objeto WP_Query()
No entiendo por qué, el profesor debería subir los archivos del curso en cada video segun el avance, tal como se hacía en el curso anterior.
No tengo donde comparar mi avance.
Este es mi código:
<?php $ID_producto_actual =get_the_ID();?><?php $args =array('post_type'=>'producto','posts_per_page'=>6,'post__not_in'=>array($ID_producto_actual),'order'=>'ASC','orderby'=>'title','tax_query'=>array(array('taxonomy'=>'categoria-productos','field'=>'slug','terms'=> $taxonomy[0]->slug // Esta es la linea 28 que hace mención el error.)));
por qué llama a la funcion pgRegisterTax()? qué quiere decir pg?
Hola Martín!
La función puede llamarse de cualquier forma. Tengo la costumbre de ponerle un prefijo para asegurarme que dentro del código no haya otras con el mismo nombre y colapsen. Es una buena práctica.
En este caso usé pg por Platzi Gifts, pero puede utilizarse cualquier nombre de función pq no la estamos ejecutando, sino creando.
Saludos!
Buenas tardes!
Alguién puede compartir el código por favor!
Lo subido a Github no es el código que se está estudiando ahora!
Es solo el código del curso anteriro prácticamente. Y cuando presento problemas en el código qy estoy escribiendo nuevo no puedo comparar imediatamente.
Si alquien pudiera compartir el código total de functions.php por favor
No me agrega las categorías de productos a los productos en el admin! En vez de decir: Categoría de Productos, solo dice Array
Hola Luis, cómo estás?
Acá te dejo el link al repo y una captura para que sepas cómo revisar el código de cada clase.
Saludos!
No puedo mostrar la taxonomia personalizada en el menu, alguien ha tenido el mismo problema
Pude hallar un work around, y ya me aparecen, lo extraño es que no me aparecen en el mismo lugar que el profe
Hola, cómo estás?
Si todavía tenés el problema, compartinos un repositorio y lo podemos revisar.
Saludos!
Si quieres que tu página sea multilenguaje y cumplir con los estándares de WordPress debes meter todas las palabras traducibles en una función especial de WordrPess __(‘Texto visible’, ‘nombre del plugin/theme’)
'labels'=>array('name'=>__('Categories of briefcase','nombre del plugin/theme'),'singular_name'=>__('Category','nombre del plugin/theme'),'search_items'=>__('Search of por Categories','nombre del plugin/theme'),'all_items'=>__('All Categories','nombre del plugin/theme'),'parent_item'=>__('Categories father','nombre del plugin/theme'),'parent_item_colon'=>__('Categories father:','nombre del plugin/theme'),'edit_item'=>__('Edit Categories','nombre del plugin/theme'),'update_item'=>__('Update Categories','nombre del plugin/theme'),'add_new_item'=>__('Add new Categories','nombre del plugin/theme'),'new_item_name'=>__('new name Categories','nombre del plugin/theme'),'menu_name'=>__('Categories','nombre del plugin/theme'),),
Luego podrás traducir ese ‘Texto visible’ con un plugin como Loco Translate
La función register_taxonomy() no es la única función que puedes usar para crear taxonomías en WordPress. Hay varias funciones que puedes usar para crear taxonomías, dependiendo de tus necesidades específicas. Aquí te muestro algunas de las funciones que puedes utilizar:
register_taxonomy(): Esta es la función principal que se utiliza para registrar una nueva taxonomía en WordPress. Con esta función, puedes especificar el nombre de la taxonomía, el tipo de contenido al que se aplicará, las etiquetas de la interfaz de usuario, entre otras opciones.
register_taxonomy_for_object_type(): Esta función te permite asociar una taxonomía existente con un tipo de contenido personalizado en WordPress.
get_taxonomy(): Esta función te permite obtener información sobre una taxonomía existente en WordPress, incluyendo su nombre, etiquetas, descripción y otros detalles.
unregister_taxonomy(): Esta función te permite eliminar una taxonomía existente en WordPress.
En resumen, la función register_taxonomy() es la función principal para crear taxonomías en WordPress, pero hay otras funciones que puedes utilizar según tus necesidades específicas, como asociar una taxonomía existente a un tipo de contenido personalizado o eliminar una taxonomía existente.
Profesor que herramienta nos rescomienda para debuggear nuestras variables mientras trabajamos?
var_dump();
También puedes usar el modo debug de WordPress que nos permite encontrar algunos errores que se podrían generar mientras desarrollamos nuestro sitio, en el sitio en producción es recomendable tenerlo desactivado.
El menu de categorias de productos me quedo bién pero desaparecieron las imagenes y no se por que razón alguien podria ayudarme con eso?
Hola Roxana, cómo estás?
Tal vez te haya quedado alguna etiqueta mal cerrada o el código para imprimir las imágenes tenga algún typo.
Si querés compartinos un repo con tu código y lo revisamos.
Saludos!
Uso StoreFront y no puedo poner en pantalla completa las imágenes y he buscado en foros y no sé por qué no puedo ¿Cómo pudiera hacerlo?
Me refiero a poner las imágenes Full-With
Hola Edwin, cómo estás?
Tendrías que fijarte si el theme tiene la opción de full width o no.
Muchas veces, los themes se desarrollan con un contenedor como marco y esto imposibilita que lo puedas modificar, salvo que reescribas los estilos en CSS.
Por eso es interesante el desarrollo de bloques, ya que te permiten modularizar espacios con diferentes tipos de contenedor, según la necesidad de cada uno.
Saludos!
Me pasa que al editar los productos para asignarles la categorías que creamos no me aparecen los checkbox con las categorias. Lo que me aparece es un cuadro text input en el cual si escribo las primeras letras de la categoría me la sugiere y la puedo seleccionar. Dejo una imagen para que se entienda mejor. Saludos.
Hola Cristobal, cómo estás?
Eso puede estar pasando por la implementación de algún plugin que esté trabajando sobre el admin. Tendrás alguno instalado?
La versión por defecto tienen checkbox, eso es una lista desplegable de multiple opción. Se puede hacer lo mismo, solo que en ese caso te facilita una forma de búsqueda de las categorías.
Saludos!
No he logrado que se actualicé el Menú Principal con Novedades, Undumentaria y Souveniers, sólo me aparece Platzi Gifts no obstante que en Editor de Menus ya los incluí ¿Me podrían ayudar? Las siguientes son las líneas que tengo en archivos:
functions.php
register_nav_menus(
array(
'top_menu' => 'Menú Principal'
Lo que identifico es que sólo presenta en el Menú las páginas e ignora Categoría y Categoría de Productos
Hola a mi me pasaba igual y lo arreglé en el apartado de menús dando en la pestaña de Gestionar ubicaciones,(está al lado de editar menús), ahí en el menú desplegable asignando el menú principal
Desarrollo de UI
Se puede personalizar el aspecto visual para
cada tipo de post en archivos específicos.
En caso de que no esté familiarizado con los tipos de publicaciones personalizadas o custom post types, básicamente son tipos de contenido que no están dentro de las clasificaciones predeterminadas de WordPress. Por ejemplo, si tienes un blog que se centra en las calificaciones, es posible que quieras crear un tipo de publicación personalizado llamado calificaciones y personalizarlo para incluir funciones adicionales.
Crear tipos de publicaciones personalizadas, sin embargo, es un tema para otro momento. Por ahora, basta decir que estos tipos de contenido tienen su propia jerarquía:
archive-{post_type}.php
archive.php
index.php
Como puedes ver, esta jerarquía no está tan desarrollada como algunas de las otras. Sin embargo, todavía tienes un par de niveles de plantillas antes de llegar a index.php, que es suficiente para crear páginas complejas.
Como recordarás, en realidad cubrimos la jerarquía de categorías anteriormente en este artículo como un ejemplo. En cualquier caso, recapitulamos las plantillas que cubre esta jerarquía, en orden:
category-{slug}.php
category-{id}.php
category.php
archive.php
index.php
Esta jerarquía funciona igual que para las entradas y las páginas individuales. WordPress buscará una plantilla que sea única para la categoría que quieres cargar, primero buscando un nombre de archivo que incluya su slug y luego continando con su ID. Si ese enfoque falla, se irá con category.php en su lugar, y luego archive.php. Tu archivo de WordPress debería incluir entradas de todas tus categorías, después de todo, por lo que tiene sentido incluirlo dentro de esta jerarquía en particular.
Hola, dejo ell link a mi repositorio donde encontraran los archivos del proyecto espero sea de su utilidad
como haces para corregir esto?
Warning: Attempt to read property "slug" on string in C:\xampp\htdocs\wordpress\wp-content\themes\Temagifts\single-producto.php on line 29
Hola, no me sale el titulo de "Categoría: Novedades" o "Categoría de Productos: Indumentaria"
¿Eso se configura en function.php?
Hola Sebastián, cómo estás?
Eso se hace desde el archivo archive.php que es el que se renderiza en todas las categorías.
Te está faltando el title del Archive.
Saludos!