El Botón Ajax de “Añadir al carrito” de WooCommerce carga una página al finalizar la solicitud

WooCommerce Logo

Me enfrenté a un problema trabajando con WooCommerce donde usé los botones ajax de “Añadir a carrito” y cuando les dabas click, en vez de mantenerte en la misma página (como debería funcionar ajax), se recarga la página, tuve que averigüar por qué.

Cuando se usan los botones ajax de “Añadir a carrito” hay unas líneas de código en el javascript que se encarga de la petición ajax donde se controla que pasa cuando termina de procesar. La ruta al fichero JS es “plugins/woocommerce/assets/js/frontend/add-to-cart.js”; aquí es el bloque de código del que estoy hablando:

// Ajax action.
$.post( wc_add_to_cart_params.wc_ajax_url.toString().replace( '%%endpoint%%', 'add_to_cart' ), data, function( response ) {
if ( ! response ) {
return;
}

if ( response.error && response.product_url ) {
window.location = response.product_url;
return;
}

// Redirect to cart option
if ( wc_add_to_cart_params.cart_redirect_after_add === 'yes' ) {
window.location = wc_add_to_cart_params.cart_url;
return;
}

// Trigger event so themes can refresh other areas.
$( document.body ).trigger( 'added_to_cart', [ response.fragments, response.cart_hash, $thisbutton ] );
});

Si se produjo algún error al procesar la solicitud el usuario es redirigido a la página del producto (si esta está disponible). Encontré un listado de cosas que pueden producir estos errores en este post de StackOverflow, dice:

If you have inventory, order maximums, product in cart maximums and any other limitations set this will happen.

Yo añadiría dos culpables más que pueden producir el redireccionamiento  o prevenir al a los botones ajax de funcionar asincronamente: hay dos opciones que se encuentran en “WooCommerce tab (desde el panel de control de WP) => Ajustes => tab de Productos”.

wc-add-cart-ajax-button-issue-options-es
Creo que se explican solas. Asegúrate de configurarlas como requieras.

Aún así nada de esto es lo que me ocurría a mí :(. Al parecer el redireccionamiento se produce también si el ajuste de visibilidad del post del producto es privado. Así que cambiarla a público resolvió el problema.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

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