WooCommerce - классы доставки для определенных c продуктов - PullRequest
0 голосов
/ 03 марта 2020

В настоящее время наш клиент продает искусственную траву и имеет 3 различных зоны доставки в зависимости от того, куда в Великобритании отправляется заказ.

Теперь они решили продавать аксессуары, но они хотят отгрузку работать следующим образом:

Фиксированная стоимость доставки при любой покупке этих аксессуаров по всей стране будет составлять 10 фунтов стерлингов, если клиент приобретает только аксессуары (без продажи травы). Если клиент одновременно покупает газон для продажи и аксессуары, то будет добавлена ​​только плата за доставку травы, так как они будут доставлены одновременно.

Возможно ли это?

1 Ответ

1 голос
/ 04 марта 2020

Я нашел решение, я добавил следующий код в мои функции. 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;
}

Это скрывает варианты доставки аксессуаров, если в корзина.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...