Tengo una página de pago de WooCommerce donde tengo algunas opciones de venta adicional / venta cruzada disponibles usando un código abreviado que genera los datos de salida (título del producto, descripción del producto, precio, miniatura) en Php.
La salida de PHP difiere dependiendo de si el producto ya está en el carrito. Por ejemplo, si el producto ya está en el carrito, la casilla de verificación de entrada está marcada y la descripción ya no se muestra. e importante; en lugar del enlace de agregar al carrito, se genera/carga un enlace remove_item= para ese producto.
Sin tratar de usar AJAX para agregar el producto al carrito, así que con la actualización de la página después de agregar el producto (venta adicional) (? Agregar al carrito), todo funciona bien. La página se vuelve a cargar y muestra el estado de entrada correcto (marcado) y los elementos de datos del producto que no quiero mostrar (p. ej., descripción) ya no se cargan/muestran para ese producto de venta adicional. También está presente el enlace ?remove_item= correcto.
PERO quiero que funcione con Ajax agregar al carrito.
Hago uso de la función AJAX incorporada de WooCommerce dando a los enlaces del producto las clases «add_to_cart_button ajax_add_to_cart».
Esto también funciona bien… el producto se agrega al carrito sin actualizar la página.
PERO, el estado de verificación de entrada (si un producto ya está en el carrito) o la no visualización de la descripción del producto es algo con lo que lucho. Sin Ajax, por lo que solo php, por lo tanto, con la recarga de página después de agregar el producto de venta adicional al carrito, funciona bien, pero cuando se usa Ajax add-to-cart no tanto … todavía.
Parte del PHP
// if product is already in cart
if ( ($cart_item['product_id'] == $product_id) || ($cart_item['data']->get_id() == $product_id) ) {
ob_start();
echo '<span class="product-box">';
echo '<span class="abc-product-remove abc-product_'.$product_id.'">';
echo '<a class="lfe-remove remove" href="'.$cart_item_remove_url.'">';
echo '<input class="switch rad-input" type="checkbox" name="checkbox" checked="checked" data-target="'.$cart_item_remove_url.'" />';
echo '</a>';
echo '</span>';
echo '</span>';
$output = ob_get_contents();
ob_end_clean();
return $output;
}
// if product is not yet in cart
ob_start();
echo '<span class="product-box">';
echo '<span class="abc-product-add abc-product_'.$product_id.'">';
echo '<a class="abc-add add_to_cart_button ajax_add_to_cart" href="'.$product_string.'" data-product_id="'.$product_id.'" data-product_sku="" data-quantity="1" >';
echo '<input class="switch rad-input" type="checkbox" name="checkbox" data-target="'.$product_string.'" data-product_id="'.$product_id.'" />';
echo '<span class="product-description">'. $short_description .'</span>';
echo '</a>';
echo '</span>';
echo '</span>';
$output = ob_get_contents();
ob_end_clean();
return $output;
¿Cómo usaría jQuery Ajax para obtener los datos de salida de $ correctos de php para el elemento del producto que jQuery Ajax agrega al carrito?
Muchas gracias.
.