https://tdestudiodesign.com/wp-content/plugins/whatsapp/style.css

Este enfoque podría ser relevante para ofertas promocionales específicas (por ejemplo, Bloque) o paquetes de productos codificados personalizados. En este caso, es posible que desee eliminar un segundo elemento del carrito, programáticamente, una vez que se elimina un producto.

Por supuesto, se necesita una relación entre los dos elementos de carrito a través de meta datos de elementos de carrito personalizado (por ejemplo, el elemento «Bundled» deberá especificar la identificación del producto «base» en el carrito dentro de un meta de elemento de carrito personalizado, por lo tanto, que podemos «escuchar» a su eliminación).

Alternativamente, Puede verificar si un par de identificaciones de productos están en el carrito, y si se elimina uno de ellos, eliminaremos automáticamente el otro – Este es el estudio de caso que pasaremos hoy, ya que es mucho más fácil.

¡Disfrutar!

¡Imaginemos que estos dos elementos están «juntos», y si uno se retira del carrito, también queremos que el otro se elimine programáticamente!

Php Snippet: elimine la identificación del producto cuando se elimina otra identificación del producto @ WooCommerce Cart

Este fragmento de código asegura que cuando un cliente elimina un producto de su carrito de WooCommerce que forma parte de un paquete, el otro producto en el paquete también se elimina automáticamente.

El código usa add_action para enganchar el bbloomer_remove_bundle_from_cart función para el woocommerce_remove_cart_item acción. Esto significa que cada vez que se retira un producto del carrito, el bbloomer_remove_bundle_from_cart la función se activará.

bbloomer_remove_bundle_from_cart la función toma dos argumentos, uno de los cuales es $removed_cart_item_key que contiene la clave única del producto que se acaba de eliminar.

La función define una matriz $bundle_ids que contiene los ID de los productos considerados parte del paquete. Luego verifica si la identificación del producto eliminado (usando $cart_item['product_id']) existe dentro del $bundle_ids formación.

Si el producto eliminado es parte de un paquete, la función recupera la identificación del otro producto en el paquete usando array_diff y reset. Luego genera una ID de carrito única para el producto y verificación restante si ya está presente en el carrito. Si se encuentra el otro producto, elimina ese producto del carro usando WC()->cart->remove_cart_item.

El código agrega un aviso al usuario que les informa que ambos productos fueron eliminados ya que se venden juntos; consulte la captura de pantalla a continuación.

 /**  * @snippet       Programmatically Remove Second Item From WooCommerce Cart  * @how-to        businessbloomer.com/woocommerce-customization  * @author        Rodolfo Melogli, Business Bloomer  * @compatible    WooCommerce 9  * @community     https://businessbloomer.com/club/  */  add_action( 'woocommerce_remove_cart_item', 'bbloomer_remove_bundle_from_cart', 9999, 2 );  function bbloomer_remove_bundle_from_cart( $removed_cart_item_key, $cart ) {     $bundle_ids = array( 123, 456 ); // BUNDLE PRODUCT IDS    $cart_item = WC()->cart->get_cart_item( $removed_cart_item_key ); // GET PRODUCT REMOVED     if ( in_array( $cart_item['product_id'], $bundle_ids ) ) {              $other_product_id = reset( array_diff( $bundle_ids, array( $cart_item['product_id'] ) ) ); // GET ME THE OTHER ID       $product_cart_id = WC()->cart->generate_cart_id( $other_product_id );       $in_cart = WC()->cart->find_product_in_cart( $product_cart_id );        if ( $in_cart ) {           remove_action( 'woocommerce_remove_cart_item', 'bbloomer_remove_bundle_from_cart', 9999, 2 );          WC()->cart->remove_cart_item( $in_cart );          wc_add_notice( 'Note: both products have been removed since they are sold together.', 'error');          add_action( 'woocommerce_remove_cart_item', 'bbloomer_remove_bundle_from_cart', 9999, 2 );        }     }  } 
¡La notificación roja personalizada aparece una vez que el paquete se retira del carrito!

Deja una respuesta

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