Я пытаюсь отключить способ доставки (и разрешить только локальный самовывоз), если:
- Корзина содержит только товары из указанной c категории.
- Корзина содержит только элементы из указанной c комбинации категорий.
Я могу успешно заблокировать одну указанную c категорию, но как я могу расширить ее для / на комбинации категорий (если оператор не работает)? Спасибо тебе
add_filter( 'woocommerce_package_rates', 'acessory_hide_shipping_methods', 90, 2 );
function acessory_hide_shipping_methods( $rates, $package ){
$category = 'acessory';
$product_cat = get_term_by( 'slug', $category, 'product_cat' );
$rates_arr = array();
if ( wp_is_category_alone_in_cart( $category ) && ! WC()->cart->is_empty() ) {
foreach($rates as $rate_id => $rate) {
if ('local_pickup' === $rate->method_id) {
$rates_arr[ $rate_id ] = $rate;
}
}
}
return !empty( $rates_arr ) ? $rates_arr : $rates;
}
function wp_is_category_alone_in_cart( $category ) {
$category_checks = array();
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$product = $cart_item['data'];
$product_in_cat = has_term( $category, 'product_cat', $product->get_id() );
array_push( $category_checks, $product_in_cat );
}
return ! in_array( false, $category_checks, true );
}