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

Comentarios

¿Y tú qué opinas?

Las URLs se convertirán en enlaces automáticamente. Tu dirección de email no se publicará ni se utilizará para enviar ningún tipo de información. Los mensajes que no aporten nada al tema que se trata en esta entrada se borrarán. Las imágenes que aparecen al lado de cada autor utilizan el servicio de Gravatar. Recuerda que puedes usar etiquetas HTML como <a href>, <code>, <em> o <strong> en los comentarios.

(necesario)

(opcional)

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.