Я пытаюсь добиться следующего:
- Покупатель добавляет Товар 1 (из категории Книги) в корзину по цене $ 10.
- Затем он добавляет в корзину Товар 2.
Как сделать, если Товар 2 в корзине, сделать Товар 1 = 0 $ и все добавленные товары из категории Книги 0 $?
Моя идея заключается в том, что если покупатель покупает определенный товар, это освобождает все товары данной категории.
Пока я получил это, но он не работает и делает все продукты в корзине до $0
:
add_action( 'woocommerce_before_calculate_totals', 'change_price_if_6245_in_cart' );
function change_price_if_6245_in_cart( $cart_object ) {
if (woo_in_cartbooks (6245) ) {
// set our flag to be false until we find a product in that category
$cat_check = false;
// check each cart item for our category
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$product = $cart_item['data'];
// replace 'books' with your category's slug
if ( has_term( 'books', 'product_cat', $product->id ) ) {
$cat_check = true;
// break because we only need one "true" to matter here
break;
}
}
// if a product in the cart is in our category, do something
if ( $cat_check ) {
// we have the category, do what we want
foreach ( $cart_object->get_cart() as $hash => $value ) {
$value['data']->set_price( 0 );
}
}
}