Описание woocommerce_matched_rates
— Filter
Хук woocommerce_matched_rates позволяет изменить массив доступных методов доставки, которые соответствуют условиям корзины. Он срабатывает после расчета доступных методов доставки и предоставляет возможность модифицировать их перед выводом пользователю
Примеры использования
Пример удаления определенного метода доставки из списка доступных:
add_filter('woocommerce_matched_rates', function($rates, $package) {
if(isset($rates['flat_rate:1'])) {
unset($rates['flat_rate:1']);
}
return $rates;
});
В этом примере мы удаляем метод доставки с идентификатором ‘flat_rate:1’ из массива доступных методов
Пример изменения стоимости метода доставки в зависимости от веса товара:
add_filter('woocommerce_matched_rates', function($rates, $package) {
if(isset($rates['flat_rate:1'])) {
$weight = WC()->cart->get_cart_contents_weight();
if($weight > 10) {
$rates['flat_rate:1']->cost += 100; // Увеличиваем стоимость на 100
}
}
return $rates;
});
В этом примере мы увеличиваем стоимость метода доставки на 100, если вес товара превышает 10 кг
Пример добавления нового метода доставки:
add_filter('woocommerce_matched_rates', function($rates, $package) {
$rates['custom_shipping'] = (object) array(
'id' => 'custom_shipping',
'label' => 'Кастомная доставка',
'cost' => 300
);
return $rates;
});
Здесь мы добавляем новый метод доставки с идентификатором ‘custom_shipping’ и стоимостью 300
— Лучшие практики
– Использование
Используйте этот хук, когда необходимо изменить, удалить или добавить методы доставки на основе условий корзины
– Производительность
Следите за тем, чтобы изменения не вызывали значительного увеличения времени обработки, особенно если методы доставки рассчитываются на основе сложных условий
– Предупреждения
Проверяйте корректность данных, которые вы модифицируете, чтобы избежать появления ошибок в выводе методов доставки
Альтернативы
Тип: filter
Этот хук позволяет модифицировать доступные методы доставки после их расчета, но до их отображения пользователю
Используйте его, если необходимо выполнять более сложные манипуляции с методами доставки