Una característica que pide mucho la gente es el poder personalizar los productos relacionados en WooCommerce.
Sin duda, la de los productos relacionados es una buena característica de WooCommerce: aumenta el número de páginas vistas, el tiempo de permanencia en la web y, en consecuencia, las ventas. Además la automatización de los elementos mostrados en este apartado en nos facilita la tarea y nos ahorra tiempo. No tenemos por qué preocuparnos de nada. En teoría.
Sin embargo tiene también algunos puntos débiles, sobre todo en el aspecto de la personalización: no permite limitar los productos mostrados en cuanto a concordancia sólo por etiquetas o sólo por categorías, ni el número de productos que se mostrarán, ni mucho menos permite elegir manualmente cuáles mostrar para un producto concreto.
Afortunadamente hay algunas formas de hacerlo, aunque WooCommerce no ofrezca esas opciones ni en el apartado de configuración ni en la ficha de producto. Vamos a ver cómo conseguirlo.
Tabla de contenidos
Qué tiene en cuenta WooCommerce para mostrar un producto como relacionado
Como decía más arriba WooCommerce tiene en cuenta, para mostrar los productos relacionados, tanto las categorías como las etiquetas. Esto, en la mayoría de las ocasiones, es un sistema muy eficaz y que funciona bastante bien.
Sin embargo, hay veces en que, según cómo establezcamos unas y otras, esto podría no tener mucho sentido.
Por ejemplo, si tenemos un ecommerce de ropa y establecemos categorías como «pantalón», «falda», «vestido», «camiseta», etcétera y, para facilitar las búsquedas o la selección por estilos, etiquetas como «verde», «azul», «verano», «entretiempo» y cualquier otra que se te pueda ocurrir.
En este caso no tiene mucho sentido que el cliente esté viendo un pantalón azul (seguramente está buscando comprarse un pantalón) y le aparezca como relacionado un jersey de lana sólo porque es también azul. Lo ideal en este caso es que se utilizaran sólo categorías para establecer qué productos se muestran como relacionados.
Productos perfectamente relacionados gracias a una correcta asignación de categorías y etiquetas
O a la inversa. Podemos tener una tienda online de productos deportivos y que las categorías sean «casco», «camiseta», «calzado», etcétera, y las etiquetas «running», «ciclismo», «fútbol», y así.
No tendría sentido entonces que a alguien que está buscando un casco para ciclismo se le mostrase como relacionado un casco de, por ejemplo, motociclismo. Lo correcto es que se le muestren otros productos para ciclismo, ¿no?
En fin, ya sé que este ejemplo viene un poco forzado, ya que el problema estaría en que, en este caso, se han establecido mal las categorías y habría que estudiar una forma más eficiente de hacerlo, pero entiendes lo que quiero decir, ¿verdad?
Tener en cuenta sólo las categorías o sólo las etiquetas
Bueno, si tu problema es éste puedes respirar tranquilo: aunque WooCommerce no permite (en las opciones de configuración) desechar las categorías o las etiquetas a la hora de seleccionar los productos relacionados, la solución para conseguirlo es muy sencilla.
Sí, es cierto que hay que utilizar código, pero no te preocupes: te lo voy a dar masticado y listo para usar. 🙂
Primera opción: quieres que para los productos relacionados que se muestran en tu tienda WooCommerce tenga en cuenta las categorías, pero no las etiquetas.
Bien, tienes que ir al archivo de funciones del tema que estés utilizando (Apariencia > Editor > funcions.php), o (mucho más recomendable) en tu plugin de funciones personalizadas, y añadir este código al final del todo (recuerda siempre, antes de modificar nada, realizar copias de seguridad):
/* Mostrar productos relacionados en WooCommerce sólo por categorías */
add_filter ('woocommerce_product_related_posts_relate_by_tag', function () {
return false;
});
Así, sin más, sólo copiar y pegar al final del archivo de funciones y listo. Dejar el comentario (lo que está entre «/*» y «*/») para recordar en un futuro para qué sirve cada cosa. Créeme, con el tiempo empiezas a acumular funciones personalizadas y es fácil olvidarse. 😉
Y la segunda opción: quieres que se muestren los productos personalizados teniendo en cuenta las etiquetas, pero no las categorías. Muy bien, en ese caso el código es el siguiente:
/* Mostrar productos relacionados en WooCommerce sólo por etiquetas */
add_filter ('woocommerce_product_related_posts_relate_by_category', function () {
return false;
});
Y listo. Ya lo tienes. ¿Ves qué solución más fácil y rápida?
¿Estás construyendo tu tienda online o eres implementador WordPress?
¿Necesitas plugins de calidad y con soporte para implementar funcionalidades concretas?
Consigue todos los plugins a la venta en la sección de plugins de esta web y todos los que siga añadiendo. Acceso a los 96 plugins (y subiendo) con soporte directo del desarrollador, actualizaciones y uso ilimitado: úsalos en tantas webs como lo necesites.
Cambiar el número de productos relacionados que muestra WooCommerce
Vamos a ver más cosas que se pueden personalizar aunque no estén incluidas como opción ni en los ajustes de WooCommerce ni en las fichas de producto. Entramos ahora con el número de productos relacionados que se mostrarán en la ficha de producto.
Por defecto se muestran cuatro, pero esto no es algo que esté ni mucho menos grabado en piedra: se puede cambiar. Para ello también es necesario tocar algo de código, pero de nuevo te lo facilito.
Se trata otra vez de ir al archivo de funciones y pegar un trozo de código al final, que será el siguiente:
/* Cambiar el número máximo de productos relacionados en la ficha de producto */
function ejr_woo_limite_relacionados () {
global $product;
$args = array (
'post_type' => 'product',
'no_found_rows' => 1,
'posts_per_page' => 4,
'ignore_sticky_posts' => 1,
'orderby' => $orderby,
'post__in' => $related,
'post__not_in' => array($product->id)
);
return $args;
}
add_filter ('woocommerce_related_products_args', 'ejr_woo_limite_relacionados');
Bien, si pegas eso así tal cual está no va a cambiar nada: seguirán mostrándose un máximo de cuatro productos relacionados en la ficha del producto. Pero ahora puedes cambiar ese número fácilmente. Basta que cambies donde dice:
'posts_per_page' => 4,
por el número que te dé la gana. Y ya lo tienes. A partir de ese momento WooCommerce tomará la cantidad que tú hayas puesto como número máximo para los productos relacionados.
Esto está muy bien si queremos excluir las etiquetas o las categorías a la hora de filtrar los productos relacionados, pero ¿y si queremos un mayor control? Porque podríamos querer determinar nosotros manualmente cuáles aparecerán para un producto concreto.
Pues bien, como de costumbre cuando trabajamos con WordPress y necesitamos algo que no está incluido por defecto, los plugins salen al rescate. Custom related products for WooCommerce, para ser exactos.
Se trata de un plugin muy sencillo, de los de activar y listo, pero muy potente y que nos permite hacer exactamente eso: elegir en cada producto qué otros productos de nuestra tienda aparecerán en la sección de productos relacionados.
Para ello sólo tenemos que editar el producto y, en la ficha de producto, ir hasta la sección de productos vinculados.
Verás entonces que ahí ha aparecido, bajo las cajas de texto de las up-sells y cross-sells, un nuevo cuadro: el de Productos Relacionados.
Si no rellenas nada en esa casilla WooCommerce establecerá las relaciones como hasta ahora: basándose en categorías y etiquetas (a no ser que hayas utilizado alguno de los códigos que menciono más arriba, en el apartado anterior).
Sin embargo si pones algo, aunque sólo sea un producto, WooCommerce ignorará sus filtros y en la ficha de producto aparecerá en la sección de productos relacionados exactamente lo que tú hayas establecido ahí.
Pero ojo, recuerda que sólo se mostrarán hasta cuatro, por muchos que coloques. Claro, que ya sabes cómo hacer que aparezcan más, ¿no? 😉
Como siempre, espero que este contenido te haya sido útil. Para cualquier duda que tengas (sobre este tema o sobre cualquier otro relacionado con WordPress o con WooCommerce) tienes a tu disposición los comentarios y el formulario de contacto.
Ernesto dice
Gracias, me sirvio.
Enrique J. Ros dice
Gracias a ti por tu comentario, Ernesto. Me alegra que te fuera útil. 🙂
Un saludo.
Alberto dice
Hola, me ha gustado mucho tu página, y tienes contenidos muy interesantes. He usado el siguiente código en el functions.php de la plantilla organicfood (WordPress 4.7) y siempre me muestra los mismos productos relacionados, no cambian:
/* Cambiar el número máximo de productos relacionados en la ficha de producto */
function ejr_woo_limite_relacionados () {
global $product;
$args = array (
‘post_type’ => ‘product’,
‘no_found_rows’ => 1,
‘posts_per_page’ => 2,
‘ignore_sticky_posts’ => 1,
‘orderby’ => $orderby,
‘post__in’ => $related,
‘post__not_in’ => array($product->id)
);
return $args;
}
add_filter (‘woocommerce_related_products_args’, ‘ejr_woo_limite_relacionados’);
Nota: ¿se puede modificar el número de columnas? tengo un problema y es que sí usas una pantalla estrecha (por ejemplo un móvil) cada dos productos si están en diferente fila salen un poco mas a la izquierda. En los productos de las categorias resolvi el problema con este código:
global $woocommerce_loop;
$woocommerce_loop[‘columns’] = 20; // NÚMERO DE COLUMNAS POR PÁGINA = 4.
add_filter( ‘loop_shop_per_page’, create_function( ‘$cols’, ‘return 12;’ ), 12 ); // NÚMERO DE PRODUCTOS = 8
En los productos relacionado no tengo problema si la pantalla es ancha, pero si redimensionas la ventana o usas un móvil para hacer la pantalla más estrecha el segundo par se ven más a la izquierda.
Enrique J. Ros dice
Gracias Alberto, me alegra que los contenidos te resulten útiles. Para adaptar los contenidos a los distintos tamaños de pantalla hay que usar las media queries de CSS.
Un saludo.
Alberto dice
Gracias por responder, no se a lo que te refieres mis conocimientos son algo limitados. De todos modos con el código que proporcionas me salen siempre los 2 mismos productos relacionados, elija el producto que elija siempre salen los mismos, jejeje. Es normal?
Ariel dice
Buenos dias
He copiado el código para que aparezcan los productos relacionados por categoría pero no funciona.
Hace tiempo que estoy intentando hacer esto ya que en la ficha de productos relacionados me aparecen otros de distintas categorías.
Estoy usando Avda.
Jaime Fuertes dice
Hola, Enrique, yo tengo otro problema distinto. Imagina que tengo categorías y subcategorías en alimentación. Por ejemplo, en cárnicos tengo cerdo, cordero, vacuno, y dentro de cordero tres subcategorías. En los productos de cordero me aparecen como relacionados solo los vacunos, me gustaría que aparecieran los más relacionados, los de la subcategoría de cordero, pero no aparece ninguno de ellos. No sé cómo podría arreglarse eso. Gracias.
Enrique J. Ros dice
Hola Jaime
Eso hay que programarlo en el template related.php de single-product y agregarlo como template personalizado al child theme.
Un saludo.
Francisco toro dice
Felicitaciones Enrique por aportar tus conocimientos, muy buenos tus tutoriales.
Por cierto estaba buscando como cambiar el texto de «productos relacionados» o en su defecto Eliminar los productos relacionados y sin querer me distes la respuesta, la dejo por aqui para que la incluyas dentro de tu post que es realmente bueno…
1.- si no queremos que se muestre ningún producto relacionado con solo renombrar related.php ya no los muestra… (no es la mejor práctica)
2.- Si queremos cambiar el titulo «Productos Relacionados, dentro de /template/single-product/related.php,, se encontrará el nombre «Related Product», cambiar por el texto que se desee, guardar y refrescar el navegador.
3.- Si se desea dejar el archivo intacto e igual quitar la sección de Productos Relacionados, con solo comentar desde hasta es suficiente. saludos…
Enrique J. Ros dice
Hola Francisco
Cualquiera de esos cambios se perderá al actualizar WooCommerce. Lo ideal es utilizar filtros y, de no ser posible, pasar el template a la plantilla y allí modificarlo.
Un saludo
Jorge dice
Interesante artículo, sobretodo por el plugin que permite personalizar qué productos relacionados queremos mostrar, sin embargo, al ir a instalar el plugin he visto que llevan más de dos años sin actualizar, además, tampoco se ha probado con las últimas versiones de woocommerce ni de wordpress. ¿Conoces otro plugin más actualizado y que haga lo mismo?
Estellar dice
Hola Enrique,
el título de «Related Products» me sale en una etiqueta H2, pero mi cliente ha cambiado el copy de related products por USE IT WITH y ahora esa frase no tiene sentido para SEO… por lo tanto querría cambiar el tag H2 por un H4 o un elemento para que no tenga importancia.
¿Cómo se puede hacer? Si lo explicas en otro artículo de tu blog o algo, pónmelo aquí porfa
muchas gracias de antemano y de nuevo felicidades por tu blog, la verdad es que lo que he aprendido de WooCommerce es en gran parte gracias a ti
saludos
Enrique J. Ros dice
Hola Estellar
Para eso tendrás que establecer un template personalizado en el directorio woocommerce del tema hijo, aunque estas cosas son poco recomendables porque todo el código que incluya anula las actualizaciones correspondientes que WooCommerce vaya realizando.
Un saludo.
Ricardo dice
Hola Enrique
Interesante articulo, tengo un tema en especifico con woocommerce, actualmente eh creado mi tienda con todo los productos y categorías correspondiente, mi consulta es hay alguna forma que cuando mi categoría tenga únicamente un solo producto me muestre directamente el contenido de este y no así que me me muestre la parte de «leer mas» y de allí me muestre el contenido, de antemano muchas gracias
Saludos!
Enrique J. Ros dice
Hola Ricardo
No sé si te refieres a algo como esto.
Un saludo
Ricardo dice
Muchas gracias, era justo lo que necesitaba
Mentor Carranza dice
Muchas gracias por tu tiempo en contestar las inquitudes de este foro, yo tengo una pregunta, el casilllero de cantidades en woocommerce es muy pequeño y al escoger cantidades sobre 100 el ultimo digito se pierde que opcion dentro de los pluging de configuracion debo utilizar para que este casillero sea mas ancho o autoajustable….he revisado casi todas las opciones y no encuentro ninguna qye me ayude…saludos
Enrique J. Ros dice
Hola Mentor
Eso se puede conseguir con un poco de CSS, revisa la directiva min-width.
Un saludo
Javier dice
Hola Enrique, puse el código y funciona muy bien, pero me gustaría que aparezcan en función del número de etiquetas que tiene en común con otro producto, alguna idea o algún plugin. Gracias
David dice
Hola Enrique, a mi no me funciona, creo que es por que realmente lo quiero por subcategorias, es una tienda de discos y cómics, las catergorías superiores son estas, pero lo que necesito, es que los relaciones por estilos, porp, rock, soul… y esto son las subcategorías, es posible hacerlo?
Gracias!
Ángel dice
Hola Enrique
Un comentario solo para agradecerte las indicaciones. El plugin para controlar los productos relacionados me ha funcionado y confío en que unas semanas pueda notar buenos resultados. Gracias!
Jordi dice
Muy buenas Enrique! Conoces algun plugin o alguna forma de mostrar productos relacionados de los vistos recientemente?
Enrique J. Ros dice
Hola Jordi
No conozco ningún plugin para eso, habría que recurrir a código.
Un saludo
Rubén dice
Hola Enrique,
¿Existe alguna manera de que los productos relacionados se muestren por atributos en vez de por categorías o etiquetas?
Un saludo y muchas gracias por todo lo que haces, eres de gran ayuda a mucha gente.
Enrique J. Ros dice
Hola Rubén
El plugin Related Products for WooCommerce permite hacerlo.
Un saludo
Gabriel dice
Hola, cómo puedo crear un template personalizado para los productos relacionados? Estoy usando Woo y Elementor, lo que quiero es que no muestre el diseño por defecto, si no uno más avanzado por así decirlo
Redlo dice
Hola, utilizo el theme GeneratePress, añado el código al final de functions.php pero no hay cambios. He puesto 8 en vez de 4
Gracias