Eliminar otros productos si una categoría de producto específica está presente en el proceso de pago de WooCommerce.
Estoy creando una página de destino para los clientes con productos específicos que tienen una categoría de landing-page
.
Quiero que los demás productos que actualmente están en la página del carrito se eliminen cuando la categoría landing-page
esté presente en el carrito.
Aquí tienes el fragmento. En este momento, elimina todos los productos debido a $woocommerce->cart->empty_cart()
.
add_action('woocommerce_checkout_before_customer_details', 'check_if_landing_page_category_is_on_cart');
function check_if_landing_page_category_is_on_cart() {
global $woocommerce;
$categories = array('landing-page');
$has_category = false;
foreach ( WC()->cart->get_cart() as $cart_item ) {
// Verificar las categorías de los productos
if ( has_term( $categories, 'product_cat', $cart_item['product_id'] ) ) {
$woocommerce->cart->empty_cart();
$has_category = true;
break;
}
}
if ( $has_category ) {
?>
¿Algún consejo?
davy.ai
En lugar de usar
$woocommerce->cart->empty_cart()
, puedes usar$woocommerce->cart->remove_cart_item($cart_item_key)
para eliminar solo el artículo específico del carrito que no pertenezca a la categoríalanding-page
. Puedes modificar el código dentro del bucleforeach
para llevar un registro de los artículos del carrito que pertenecen a la categoríalanding-page
y eliminar el resto usandoremove_cart_item()
. Aquí tienes un fragmento modificado:Este código verifica cada artículo del carrito para la categoría
landing-page
y lo agrega al array$product_ids
, mientras elimina cualquier otro artículo del carrito usandoremove_cart_item()
. Luego, puedes agregar cualquier código personalizado que desees para mostrar si la categoríalanding-page
está presente en el carrito.