Ticker

6/recent/ticker-posts

Ad Code

Responsive Advertisement

El mini carrito no se actualiza – Soluciones

Montones de temas, incluso plugins, ofrecen mostrar un mini carrito en nuestra web, que se actualiza automáticamente cuando un cliente añade un producto al carrito, y le permite en todo momento durante la navegación por nuestra tienda en línea saber qué productos, incluso el importe, de lo que ha añadido al carrito, ofreciéndole en algunos casos incluso enlaces rápidos desde los que revisar el carrito, ir al pago, y también en ocasiones añadir o reducir artículos del carrito, dependiendo de la funcionalidad que ofrezca el mini carrito.

Resumiendo, podríamos decir que el mini carrito es una versión reducida del carrito de WooCommerce que, mediante widgets o código en la plantilla, muestra en tiempo real, y automáticamente, los productos que un cliente añade al carrito, durante el proceso de compra en la tienda en línea.

Además, una característica fundamental del mini carrito es que se actualice sin que tengas que recargar la página, que sea visiblemente automático, como puedes comprobar en el vídeo de arriba.

El problema

Lo que me ha pasado en varias ocasiones en webs de clientes y propias es que, por el motivo que sea, el mini carrito no se actualiza automáticamente al añadir productos al carrito, dejando de tener utilidad por completo.

Esto puede ser debido a varias causas, que veremos a continuación, con la solución a las mismas.

Soluciones

Dependiendo de la causa de que no se actualice el mini carrito la solución será diferente, así que vamos a ver los posibles culpables de que no funcione esta utilidad tan interesante para cualquier tienda en línea.

Incompatibilidad con plugins

Siempre, siempre, hay que asumir que puede ser que algún plugin esté interfiriendo a la hora de diagnosticar cualquier problema en WordPress. Por este motivo siempre, siempre, debes probar primero a desactivar todos los plugins activos, excepto lógicamente, WooCommerce, o el plugin del mini carrito, si es que lo has añadido con algún plugin.

Después de desactivar todos los plugins prueba a ver si ya funciona el mini carrito. Si así fuera, ve activando los plugins uno a uno hasta detectar el que provoque el problema, y si así fuera contacta con el autor del mismo para animarle a revisarlo y evitar que interfiera con la funcionalidad del mini carrito.

Si ninguno de los plugins es lo que provoca el problema, seguimos con otras posibles causas y soluciones.

Incompatibilidad con temas

Si el mini carrito no es una funcionalidad del tema activo, sino que lo has añadido mediante un plugin, pudiera ser que tu tema activo no sea compatible con el mini carrito añadido. Para comprobarlo activa algún tema por defecto de WordPress, los que empiezan por Twenty (como Twenty Twenty-Three y similares) y si funciona con alguno de estos temas tendrás que contactar con el autor del plugin, exponiéndole con qué tema no funciona su plugin de mini carrito, para que en lo posible añada compatibilidad con el mismo.

Otra posibilidad es contactar con el autor del tema, y pedirle lo mismo, que añada compatibilidad con el plugin de mini carrito.

Las cachés

Pues sí, de nuevo, los distintos servicios y/o plugins de caché que tengamos activos en nuestra web pueden estar impidiendo, en este caso, que se actualice el mini carrito, debido a que la caché sea tan persistente que tarde mucho en mostrar los cambios en las páginas, impidiendo que funcione la actualización automática del mini carrito.

Para comprobar si las cachés son las culpables del problema, en principio, desactiva todos los sistemas de caché activos, hasta detectar cuál de ellas (estática, dinámica, objetos, etc.) es la que impide que se actualice automáticamente el mini carrito.

Una vez detectada, si así fuera, no hay que dejarla inactiva, pues las cachés son una herramienta muy importante a la hora de optimizar la carga de las páginas de nuestra web, sino que debes ver el modo de excluir el mini carrito de la caché, para que se almacene en caché el resto de elementos de tus páginas, pero no el mini carrito.

La cookie del mini carrito

Un modo de excluir el mini carrito de los plugins de caché es forzando a que no se incluya su cookie en la caché, que permite que se muestren los productos de cada cliente, del mismo en las exclusiones de caché mediante cookies.

En concreto debes excluir la cookie woocommerce_cart_hash, que es la que genera el mini carrito, añadiendo la siguiente función por el método que prefieras.

Si utilizas el plugin SG Optimizer hay una función específica, esta:

/* Excluir de cache de SG por cookie */
add_filter( 'sgo_bypass_cookies', 'add_sgo_bypass_cookies');
function add_sgo_bypass_cookies( $bypass_cookies ) {
// Agrega las cookies que quieras que no les afecte la cache.
$bypass_cookies[] = 'woocommerce_cart_hash';
$bypass_cookies[] = 'nombre_de_otra_cookie';

return $bypass_cookies;
}

En el caso de WP Rocket hay una sección específica en la que puedes añadir qué cookies quieres excluir de su caché.

excluir cookies cache wp rocket

Si utilizas cualquier otro plugin de caché, puedes añadir la línea siguiente a tus funciones:

/* Excluir cookie de mini carrito de las caches */
isset( $_COOKIE['woocommerce_cart_hash'] ) && define( 'DONOTCACHEPAGE', true );

Fragmentos del carrito y AJAX

Hay muchos plugins, incluso tú mismo puedes haberlo hecho, que desactivan una función denominada fragmentos del carrito, en concreto me refiero a wc-ajax=get_refreshed_fragments, que es lo que utiliza WooCommerce para actualizar automáticamente el carrito, y también el mini carrito.

Que esta utilidad funcione depende, inicialmente de que tengas activo el ajuste de WooCommerce de activar AJAX.

activar ajax woocommerce

Si no tuvieses activo ese ajuste es muy probable que sea el culpable de que no se actualice el mini carrito. Pero también puede suceder que, aún estando activo, sea otro el motivo por el que no funcione la actualización automática del carrito mediante AJAX.

  • Que hayas «optimizado» tu web para que no se active wc-ajax=get_refreshed_fragments.
  • Que tengas activo un plugin que incluya la desactivación de wc-ajax=get_refreshed_fragments.

Para comprobar si has sido tú quien has desactivado wc-ajax=get_refreshed_fragments revisa el archivo functions.php del tema activo, o algún plugin de personalizaciones o plugin mu, donde pueda estar un código que lo desactive, parecido a este:

add_action( 'wp_enqueue_scripts', 'dequeue_woocommerce_cart_fragments', 11);
function dequeue_woocommerce_cart_fragments() {
if (is_front_page() || is_single() ) wp_dequeue_script('wc-cart-fragments');
}

Si lo encuentras bórralo, o coméntalo añadiendo dos barras inclinadas delante de cada línea (//) para que no funcione, así:

//add_action( 'wp_enqueue_scripts', 'dequeue_woocommerce_cart_fragments', 11);
//function dequeue_woocommerce_cart_fragments() {
//if (is_front_page() || is_single() ) wp_dequeue_script('wc-cart-fragments');
//}

A continuación comprueba que ya funcione el mini carrito.

Si no encuentras el código o si no funciona el mini carrito a pesar de desactivar el código o comentarlo, desactiva cualquier plugin de optimización que tengas activado en tu web, pues muchos de ellos incluyen la desactivación de wc-ajax=get_refreshed_fragments, en algunos casos mediante un ajuste específico solo para esa optimización, y en otros casos lo hacen automáticamente, sin ajuste alguno, como es el caso de WP Rocket.

Datos transitorios

Otro posible causante del problema son los datos transitorios, los transients de WooCommerce.

Lo primero que debes hacer es ir a la página de herramientas de WooCommerce, en la administración de tu WordPress, en concreto en WooCommerce → Estado → Herramientas y pulsar los siguientes botones:

  • Datos temporales de WooCommerce
  • Datos temporales caducados
  • Recuentos de términos
  • Borrar las sesiones de cliente
  • Vaciar la caché de la plantilla

borrar temporales transients woocommerce

Además, si utilizas WP Rocket, que sabes que es uno de mis plugins favoritos para optimizar todo tipo de webs, hay un plugin específico para este tipo de situaciones. Así que si compruebas que el «culpable» es WP Rocket simplemente instala y activa el plugin de borrado de datos transitorios de fragmentos del carrito para WP Rocket.

¿No ha funcionado?, prueba con el plugin de gestión y borrado de datos transitorios, que funciona para cualquier plugin de caché u optimizaciones, solo tienes que localizar dato transitorio que incluya get_refreshed_fragments.


¿No has podido solucionar el problema?

Si a pesar de hacer todas las comprobaciones y aplicar todas las posibles soluciones que hemos visto en esta guía aún sigues con el problema de que no se actualiza automáticamente el mini carrito cuéntanoslo en los comentarios, a ver si entre todos podemos ayudarte 😉

El artículo El mini carrito no se actualiza – Soluciones lo publicó Fernando Tellado previamente en Ayuda WordPress. Lo que ves aquí es una copia de dicho contenido :/

Enregistrer un commentaire

0 Commentaires