Я нашел решение, я добавил следующий код в мои функции. php файл в моей дочерней теме:
add_filter('woocommerce_package_rates', 'specific_products_shipping_methods', 10, 2);
function specific_products_shipping_methods($rates, $package) {
$terms = array('grass');
$taxonomy = 'product_cat';
$method_instances_ids = array('flat_rate:9', 'flat_rate:10', 'flat_rate:11');
$found = false;
foreach($package['contents'] as $cart_item) {
if (has_term($terms, $taxonomy, $cart_item['product_id'])) {
$found = true;
break;
}
}
if (! $found) return $rates;
foreach($rates as $rate_id => $rate) {
if (in_array($rate_id, $method_instances_ids)) {
unset($rates[$rate_id]);
}
}
return $rates;
}
Это скрывает варианты доставки аксессуаров, если в корзина.