Funciones para personalizar una tienda online basada en WordPress
Productos relacionados sólo por categorÃa o etiqueta en WooCommerce
Cuando se utiliza WordPress junto con WooCommerce para montar una tienda online, una función que casi siempre suele estar presente es la de mostrar productos relacionados en la ficha individual de cada uno de los artÃculos que tenemos en venta.
Es una sección que permite mostrar automáticamente otros productos de la tienda que comparten las mismas etiquetas o categorÃas que el artÃculo que estamos viendo. Esta sección no se puede editar desde el area de administración ni definir en el editor de productos.
Por defecto, WooCommerce está configurado para mostrar productos relacionados por categorÃa y etiqueta al mismo tiempo. Por ejemplo, si tuviéramos un producto guardado en la categorÃa «Libros», con la etiqueta «Ficción», el sistema nos mostrarÃa cuatro (o la cantidad que hayamos configurado) productos aleatorios guardados en «Libros» y también en «Ficción».
Si este comportamiento no es lo que buscamos y queremos por ejemplo mostrar artÃculos relacionados sólo dentro de la sección «Ficción» (etiqueta), podrÃamos modificar el archivo «related.php» (en /templates/single-product/related.php
) y tratar de sustituir el loop original, o bien aprovechar la flexibilidad de WooCommerce y activar o desactivar los filtros que nos interesan.
Gracias a estos filtros que los desarrolladores del plugin ponen a nuestra disposición, no es muy complicado cambiar este comportamiento para que nuestra tienda muestre sólo productos relacionados por categorÃa o por etiqueta.
Filtrar los productos relacionados
Si examinamos el archivo «abstract-wc-product.php» (en /plugins/woocommerce/includes/abstracts/abstract-wc-product.php
) veremos que la función «get_related» incluye dos filtros que se encargan de modificar la consulta final a la base de datos:
- woocommerce_product_related_posts_relate_by_category
- woocommerce_product_related_posts_relate_by_tag
Esto quiere decir que, si queremos personalizar el comportamiento de la función «get_related», sólo tenemos que desactivar uno de estos dos filtros.
El siguiente ejemplo muestra cómo desactivar el filtro de categorÃas, para mostrar productos relacionados sólo por etiqueta:
/* Personalización para WooCommerce: Mostrar productos relacionados sólo según etiqueta. Desactivamos el filtro de categorÃas. */ add_filter( 'woocommerce_product_related_posts_relate_by_category', function() { return false; });
En este otro ejemplo desactivamos el filtro de etiquetas, para mostrar productos relacionados sólo por categorÃa:
/* Personalización para WooCommerce: Mostrar productos relacionados sólo según categorÃa. Desactivamos el filtro de etiquetas. */ add_filter( 'woocommerce_product_related_posts_relate_by_tag', function() { return false; });
Podemos incluir estos fragmentos directamente en el archivo functions.php del tema que tengamos activo, crear un archivo de funciones especÃficas de WooCommerce (para tenerlo todo bien ordenado) o bien crear un plugin aparte para poder aplicar más fácilmente las funciones en otros temas.
Más información
- Set up Related Products, Up-Sells, and Cross-Sells (documentación de WooCommerce, en inglés)
- Hooks: Action and Filter reference (documentación de WooCommerce, en inglés)
- Output posts relating to the tags (Stackoverflow.com)
Comentarios