Ajax añadir al carrito no trabajar en wordpress 5.6
Este código se supone que debe añadir productos con ajax a woocommerce cart en la página del producto, todo está bien comprar cuando wordpress 5.6 se libera pero cuando la biblioteca Jquery se actualiza este código no funciona en productos de variación. por favor ayude a resolver este conflicto Jquery. Este problema no en productos simples y productos simples añadidos a la cesta muy bien.
php
/**
* JS for AJAX Add to Cart handling
*/
function ace_product_page_ajax_add_to_cart_js() {
global $post;
if('product' == $post-post_type) {
?>
php
}
}
add_action( 'wp_footer', 'ace_product_page_ajax_add_to_cart_js' );
/**
* Add to cart handler.
*/
function ace_ajax_add_to_cart_handler() {
WC_Form_Handler::add_to_cart_action();
WC_AJAX::get_refreshed_fragments();
}
add_action( 'wc_ajax_ace_add_to_cart', 'ace_ajax_add_to_cart_handler' );
add_action( 'wc_ajax_nopriv_ace_add_to_cart', 'ace_ajax_add_to_cart_handler' );
// Remove WC Core add to cart handler to prevent double-add
remove_action( 'wp_loaded', array( 'WC_Form_Handler', 'add_to_cart_action' ), 20 );
/**
* Add fragments for notices.
*/
function ace_ajax_add_to_cart_add_fragments( $fragments ) {
$all_notices = WC()-session->get( 'wc_notices', array() );
$notice_types = apply_filters( 'woocommerce_notice_types', array( 'error', 'success', 'notice' ) );
ob_start();
foreach ( $notice_types as $notice_type ) {
if ( wc_notice_count( $notice_type ) > 0 ) {
wc_get_template( "notices/{$notice_type}.php", array(
'notices' => array_filter( $all_notices[ $notice_type ] ),
) );
}
}
$fragments['notices_html'] = ob_get_clean();
wc_clear_notices();
return $fragments;
}
add_filter( 'woocommerce_add_to_cart_fragments', 'ace_ajax_add_to_cart_add_fragments' );
Pregunta hecha hace 3 años, 4 meses, 29 días - Por pixelpioneer
3 Respuestas:
-
Problema resuelto cambiando la siguiente línea:
var formData = new FormData(form.context);
a:
var formData = new FormData(this);
Respondida el Dec 18, 2020 a las 04:44 - por nodenomad
Votos positivos: 0 | Votos negativos: 0 -
Para solucionar el problema que mencionas con la actualización de jQuery en WordPress 5.6 y el funcionamiento del código de añadir productos con AJAX a Woocommerce cart en la página del producto, aquí te dejo algunas sugerencias:
- Actualiza el uso de jQuery: En lugar de usar `jQuery(function($){...})`, puedes utilizar `jQuery(document).ready(function($){...})`. Esto asegura que el código se ejecute una vez que el DOM esté completamente cargado.
- Modifica la forma de obtener el formulario: En lugar de `var form = $(this);`, puedes probar con `var form = $(this)[0];`.
- Revisa cómo se las variaciones en el producto afectan al proceso de añadir al carrito. Puede que el problema esté relacionado con la manera en que se manejan las variaciones en el formulario.
- Verifica si las variables como `wc_add_to_cart_params` están siendo pasadas correctamente y contienen la información necesaria. Puedes hacer un `console.log` de estas variables para comprobarlo.
- Ajusta el manejo de las respuestas: Asegúrate de manejar correctamente la respuesta del servidor en la función `complete` del AJAX. Verifica si estás recibiendo la información esperada y cómo estás tratando la respuesta.
- Verifica si hay errores en la consola del navegador: Asegúrate de revisar la consola del navegador para ver si hay errores que puedan darte pistas sobre qué está fallando en tu código.
Con estas sugerencias podrás depurar tu código y ajustarlo para que funcione correctamente con las actualizaciones de jQuery y WordPress. Si después de realizar estos ajustes sigues teniendo problemas, no dudes en consultarlo para poder ayudarte a solucionar el inconveniente.
Respondida el Dec 19, 2020 a las 04:45 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Problema:
El código proporcionado para agregar productos al carrito de Woocommerce a través de Ajax no funciona para productos variables en WordPress 5.6 después de actualizar la biblioteca jQuery.
Solución:
Para resolver este problema, sigue estos pasos:
- Actualiza la biblioteca jQuery a la versión 3.6.1 o posterior:
- Asegúrate de que la variable
$post
esté definida:
$post
se utiliza para verificar si la página actual es una página de producto. Sin embargo, esta variable puede no estar definida en algunos casos. Para evitar errores, puedes agregar esta línea al principio de la funciónace_product_page_ajax_add_to_cart_js()
:php global $post; if ( empty( $post ) ) { return; }
- Comprueba la consola del navegador para ver si hay errores:
Código actualizado:
php /* JS for handling Ajax Add to Cart
- /
Respondida el Dec 19, 2020 a las 04:52 - por Gemini
Votos positivos: 0 | Votos negativos: 0