Como dice mi amigo Gonzalo, esto debería salir en el telediario. ¿Cómo es posible que un software de ecommerce serio falle cuando un producto tiene más de 20 variaciones? Pues pasa, en concreto en WooCommerce, el estándar para crear tiendas en WordPress.
Índice de contenidos
El problema con las variaciones en WooCommerce
Resulta que en la versión 2.4 de WooCommerce, para optimizar la aplicación se decidió poner un límite, para que cuando un producto tenga más de 20 variaciones, estas carguen en AJAX en vez de en JavaScript.
¿Resultado? En la mayoría de las «tiendas normales» que usan variaciones en sus productos, y en la mayoría son más de 20 las variaciones de casi cualquier producto, el cliente no ve las variaciones o las ve oscurecidas, sin poder seleccionarlas. ¡Una catástrofe!
La(s) solución(es)
Mientras los ingenieros de WooCommerce no encuentren una solución para ofrecer un sistema sólido para tiendas medianas y grandes (¡ay madre, así nunca llegaremos a dominar el mundo del ecommerce!), afortunadamente puedes modificar esa restricción y adaptarla al tamaño de variaciones de tus productos.
Con un código
La manera más óptima y personalizable es añadir una función como la siguiente a tu plugin de personalizaciones de código, o al archivo functions.php
del tema activo:
// Cambiar el umbral de variaciones de WooCommerce function ayudawp_wc_ajax_variation_threshold( $qty, $product ) { return 100; } add_filter( 'woocommerce_ajax_variation_threshold', 'ayudawp_wc_ajax_variation_threshold', 10, 2 );
En el código tienes que cambiar el umbral en la línea return 100;
por el número máximo de variaciones que utilices. Guardas los cambios y problema solucionado.
El código le dice a WooCommerce que permita 100 variaciones del producto antes de dejar de usar el JavaScript que permite que el navegador web active o desactive dinámicamente las listas desplegables.
Observa también que el filtro te pasa la referencia del producto. Esto es para una tienda que funcione con números estáticos, pero también podrías usar un umbral dinámico basado en la categoría, el nombre, la etiqueta, u otros datos.
Además, puedes incluso usar el objeto $product
para aplicar el filtro solo aun producto específico, y así seguir aplicando la – real – optimización de carga para el resto de productos.
Sería algo así:
if( $product->get_id() !== 123 ) { return $qty; } return 100;
Donde 123
es el ID del producto.
Con un plugin
El plugin WC Variations AJAX ofrece una interfaz sencilla en la que tú decides el umbral, guardas y ya está. Viene a hacer lo mismo que el código anterior pero de manera visual.
Ve a Ajustes > WC Variations AJAX y elige el umbral máximo de variaciones que necesites y lo tienes.
Resumiendo
Esperemos que WooCommerce siga avanzando y abandone estas malas decisiones, que no ayudan nada a que sea un estándar en comercio electrónico.
WordPress lidera el mundo de la creación y publicación web, y es importante que disponga de una plataforma de ecommerce sólida, capaz de competir con los grandes del mercado como Shopify, PrestaShop y Magento, y este tipo de fallos tontos no ayudan nada.
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
Muchas gracias Fernando y Gonzalo por compartirlo y difundirlo, esperemos que lo solucionen rápido desde la misma plataforma de woocommerce, a fin de que nadie desista de utilizarlo.
Que bueno! Esto es lo más parecido a salir en Telediario 😉 Esperemos que recojan el guante y lo solucionen en la próxima versión. Un abrazo craaaack!!!!
Me acabas de salvar la tarde!
Muchas gracias!!!!!
Abril 2020 y esa solución aun funciona perfecto. Salvaste mi dia.
Buenas tardes, una ayuda… estou haciendo este proceso que indicas.. pero tengo un producto con aprox 100 variaciones …. en este producto en especificio necesito que los items q no tienen stock aparezcan marcados como q no se manejan ..(con una X) …
Tengo otros productos en los cuales esta funcion si funciona, pero en el que describo anteriormente no me funciona ..
ayuda, ya descargue el plugin y le puse 200 variaciones . y nada ..
Tambien le puse el codigo en function y me bloquea el producto y no lo deja ver ….
que puedo hacer….