У меня есть несколько способов доставки на моей странице, и я хочу, чтобы они стоили ноль, когда заказ превышает 2500 чешских крон. Я обнаружил, что код показывает только вариант бесплатной доставки, когда клиент достигает минимума для бесплатной доставки, но это не то, что я хочу .. Я хочу показать все методы (но с нулевой ценой), чтобы клиент мог выбрать, какую доставку компания, с которой он хочет, чтобы его заказ был доставлен. Спасибо!
Установите нулевую стоимость всех способов доставки на основе промежуточного итога корзины в WooCommerce.
comment
Обратите внимание, что в StackOverFlow мы ожидали, что вы сначала выполните поиск, попробуете себя и предоставите в своем вопросе собственную реальную попытку кода. Я ответил на ваш вопрос исключительно, поскольку мне пришлось внести небольшие изменения в существующий код ответа.
- person LoicTheAztec   schedule 10.02.2021
Ответы (1)
На основании Задайте общую сумму доставки корзины после Woocommerce обновить код ответа, вот способ заставить его работать в зависимости от итоговой суммы определенных товаров в корзине:
add_filter('woocommerce_package_rates', 'null_shipping_costs_conditionally', 10, 2 );
function null_shipping_costs_conditionally( $rates, $package ){
$threshold_amount = 2500;
if( $package['contents_cost'] >= $threshold_amount ) {
// Loop through shipping methods rates
foreach ( $rates as $rate_key => $rate ){
// Targeting all shipping methods except "Free shipping"
if ( 'free_shipping' !== $rate->method_id ) {
$has_taxes = false;
$taxes = [];
$rates[$rate_key]->cost = 0; // Set cost to 0 (zero)
// Taxes rate cost (if enabled)
foreach ($rates[$rate_key]->taxes as $key => $tax){
if( $tax > 0 ){
$has_taxes = true;
$taxes[$key] = 0; // Set tax cost to 0 (zero)
}
}
if( $has_taxes )
$rates[$rate_key]->taxes = $taxes;
}
}
}
return $rates;
}
Код находится в файле functions.php активной дочерней темы (или активной темы). Проверено и работает.
Примечание. Сохранив этот код, не забудьте очистить корзину, чтобы обновить кэшированные данные о доставке.
person
LoicTheAztec
schedule
10.02.2021
Спасибо большое!! И последнее: что, если я хочу добавить текст рядом с методами доставки, в котором написано «бесплатно»? Теперь удаляет только цену. Спасибо !!
- person Tereza Sadílková; 11.02.2021
Сначала Если мой ответ отвечает на ваш первоначальный вопрос, вы можете принять ответ, спасибо. Итак, после строки с:
$rates[$rate_key]->cost = 0;
добавьте новую строку ниже с $rates[$rate_key]->label = __("Here your text", "woocommerce");
, где вы замените Here your text
текстом, который вы хотите отобразить.
- person LoicTheAztec; 11.02.2021
Я принял ответ, спасибо. Когда я попытался вставить код, оба метода доставки изменились на введенный мной текст. Я хотел поместить свой текст рядом со способами доставки - например. FedEx (бесплатно), а не только бесплатно.
- person Tereza Sadílková; 12.02.2021
@ TerezaSadílková В этом комментарии невозможно ответить или понять. Зона… Правило на StackOverFlow - это только один вопрос. Пожалуйста, сначала поищите, попробуйте сами, если что-то найдете или зададите новый вопрос.
- person LoicTheAztec; 12.02.2021
Она имеет в виду следующее; она попросила дополнительную помощь с добавлением текста после транспортной этикетки, и предоставленный вами ответ полностью заменяет этикетку, в результате чего все варианты доставки называются Здесь ваш текст - что далеко не обязательно.
- person ; 13.02.2021