Woocommerce Ajax Añadir al carrito no funciona
1 dic 2015, 07:22:13
Vistas: 14.4K
Votos: 1
En WooCommerce el método Ajax para añadir al carrito no funciona cuando el carrito está vacío, si el carrito contiene algo entonces mi función Ajax añade pero si el carrito está vacío no añade. Y no hay error.
Aquí está el enlace. Función PHP para añadir al carrito:
function add_custom_product_meta() {
global $woocommerce, $wpdb;
$item_id = isset($_POST['item_id']) ? apply_filters( 'woocommerce_add_to_cart_product_id', absint( $_POST['item_id'] ) ) : FALSE;
$quantity = empty( $_POST['quantity'] ) ? 1 : wc_stock_amount( $_POST['quantity'] );
$passed_validation = apply_filters( 'woocommerce_add_to_cart_validation', true, $item_id, $quantity );
$product_status = get_post_status( $item_id );
$variation_id = isset($_POST['variation_id']) ? $_POST['variation_id'] : 0;
$atributes = isset($_POST['atributes']) ? $_POST['atributes'] : 'Small';
$attribute_pa_macaroons = isset($_POST['attribute_pa_macaroons']) ? $_POST['attribute_pa_macaroons'] : FALSE;
if($attribute_pa_macaroons && $passed_validation && $woocommerce->cart->add_to_cart( $item_id, $quantity, $variation_id, array( 'attribute_size' => $atributes, "macaroons" => $attribute_pa_macaroons))){
//$added = $woocommerce->cart->add_to_cart( $item_id, $quantity, $variation_id, array( 'attribute_size' => $atributes, "macaroons" => $attribute_pa_macaroons));
do_action( 'woocommerce_ajax_added_to_cart', $item_id );
if ( get_option( 'woocommerce_cart_redirect_after_add' ) == 'yes' ) {
wc_add_to_cart_message( $item_id );
}
WC_AJAX::get_refreshed_fragments();
echo json_encode(array(
'atributes' => $atributes,
'macaroons' => $attribute_pa_macaroons,
'product_added' => TRUE,
'ajax_complete' => TRUE,
'posted' => isset($_POST['item_id']) ? $woocommerce->cart : 'item_id is empty'
));
wp_die();
}
echo json_encode(array(
'product_id' => FALSE,
'product_added' => FALSE,
'ajax_complete' => TRUE,
'posted' => $attribute_pa_macaroons
));
wp_die();
}
Llamada Ajax en Javascript:
$.ajax({
type : 'post',
dataType : 'json',
url : woocommerce_params.ajax_url,
data : {
'action' : 'elephas_addtocart_box',
'item_id' : itemID,
'quantity' : quantity,
'variation_id' : variathionID,
'atributes' : atributes,
'attribute_pa_macaroons' : itemData
}
})
.done(function(response){
if(response.ajax_complete){
document.location.reload(true);
}
})
.error(function(error){
console.log(error);
})
.always(function(response){
if(response.ajax_complete){
document.location.reload(true);
}
});

Mohamed Rihan
190
Comentarios
Mostrar los 2 comentarios restantes
Todas las respuestas a la pregunta
1
2
Creo que tu función php add_to_cart no está configurando las cookies del carrito, puedes hacer esto manualmente agregando esta línea dentro de la condición if antes de la
//$added
línea
agrega esta línea
do_action( 'woocommerce_set_cart_cookies', TRUE );
esto configurará las cookies del carrito.

Kamaal ABOOTHALIB
453
1 dic 2015 09:12:16
Preguntas relacionadas
2
respuestas
1
respuestas