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

  1. Hace poco he lanzado una tienda virtual basada en Woocommerce. La verdad es que me ha sorprendido lo flexible que puede llegar a ser.

  2. ROSALIA

    Tengo un blog de idiomas y quisiera lanzar algunos servicios, como por ejemplo ofrecer cursos online. Mi idea es a través de un link que el alumno clickee pueda acceder al curso y que directamente se pueda cobrar curso. Que me aconsejais que haga.
    A pesar de que llevo un año con el blog en wordpress, acabo de hecerme el plan premiun, pero ando algo escasa de conocimientos en estas gestiones ;-). Gracias

  3. Estudio SEO

    Hola Daniel que tal?
    No sabes las horas que vengo con este tema y encontrar tu post fue como tener un orgasmo…
    Agradezco imensamente la informacion, te envio un saludo desde Uruguay, Jorge Ferreira.

  4. Gaiteira F.

    Buenas tardes, soy novata en WordPress y me encuentro con una incógnita que no sé despejar.

    ¿Es posible que las diferentes entradas que hacemos de blog estén vinculas a una pestaña del menú? Es decir que unos días después de realizar la entrada en el blog, pase de la pestaña de inicio a otra pestaña del menú.

    En mi caso, mi blog trata sobre 3 temas diferentes (moda, decoración y eventos) y hago entradas en el blog sobre estos temas, y me gustaría que las entradas que hago de un tema concreto se almacenen dentro de las pestañas que tengo en el “menú por defecto” de Moda, Decoración y eventos.

    Tengo la versión gratuita, ¿Es posible hacer esto??

    Muchas gracias.
    Gaiteira F.

  5. Daniel

    Hola Gaiteira.
    Seguramente en la portada (inicio) de tu web se muestran las entradas recientes (es decir, las X entradas más actuales). Después, esos artículos pasan al archivo general (y también a los archivos de cada etiqueta y categoría). En los menús (que se gestionan desde Apariencia > Menús) se pueden añadir enlaces a cualquiera de estos archivos (tanto categorías como etiquetas). Si no te aparece esta opción, puedes activarla desde “Opciones de pantalla” (arriba del todo en la página de Menús).
    Todo esto forma parte de WordPress (tanto la versión de wordpress.com como la instalable), no es necesario instalar ningún plugin ni contar con un tema determinado.

  6. María José

    Hola. He encontrado tu blog por casualidad y me está ayudando en muchas cosas. Aunque hay algo que me trae de cabeza y necesito ayuda. Estoy con una tienda en woocommerce, es de una editorial y me han pedido que los autores puedan acceder a sus libros para ver cómo van sus ventas y demás. Ellos no venderían, sólo sería a título informativo, por lo que el multi vendor aquí no serviría. Cómo puedo hacer para mostrarles sus productos por usuario? Los registraría yo con algún rol? Ayúdame, por fa, porque no tengo ni idea de cómo puedo hacerlo.

  7. Daniel

    Hola María José.
    WooCommerce incluye dos tipos de usuario nuevos: uno para el comprador (Customer) y otro para gestionar la tienda (Shop Manager). Este último tiene dos capacidades nuevas (que también se añaden al usuario administrador de la web):

    – manage_woocommerce (ajustes de la tienda, configuración…)
    – view_woocommerce_reports (estadísticas, informes…)

    Para hacer lo que comentas, tendrías que crear usuarios con permisos específicos para ver esos informes de ventas (aunque me temo que no serían por producto, sinó de todo el conjunto de la tienda).

    Aquí tienes más información:
    https://docs.woocommerce.com/document/roles-capabilities/

  8. Cohen

    Menudo post, he leido este y varios más y te has pegado un trabajazo, enhorabuena y ojala sigas escribiendo.

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)