#php #wordpress #woocommerce #checkout #shipping-method
#php #wordpress #woocommerce #Оформить покупку #способ доставки
Вопрос:
Предваряя этот вопрос, я знаю, что могут быть другие способы достижения цели, но я пытаюсь понять, как Woocommerce работает немного лучше, поэтому ситуация такова, что у меня есть плагин, который может изменять стоимость доставки в зависимости от товаров в корзине, но я хочу изменить названиеот стоимости доставки в зависимости от стоимости.
Из того, что я нашел в HTML, текущая структура метода доставки выглядит следующим образом:
<td data-title="Shipping">
<ul id="shipping_method" class="shipping__list woocommerce-shipping-methods">
<li class="shipping__list_item">
<input type="hidden" name="shipping_method[0]" data-index="0" id="shipping_method_0_flat_rate24" value="flat_rate:24" class="shipping_method" /><label class="shipping__list_label" for="shipping_method_0_flat_rate24">Flat Rate Shipping Fee: <span class="woocommerce-Price-amount amount"><bdi><span class="woocommerce-Price-currencySymbol">amp;#36;</span>10.00</bdi></span></label>
</li>
</ul>
Я пытаюсь создать функцию для functions.php файл моей темы WordPress, я просмотрел некоторый код в Google и нашел аналогичную функцию, включающую «$available_shipping_methods», но я не был слишком уверен, как использовать эту переменную, поэтому в настоящее время у меня есть это:
add_filter('woocommerce_package_rates', 'wc_shipping_rate_rename', 100, 2)
function wc_shipping_rate_rename($rates, $package){
//Checking if the shipping rate exists
if ( isset( $rates['flat_rate:24'] ) ) {
//Getting the rate
$ship_cost = $rates['flat_rate:24']->cost;
if ( $ship_cost == 10) {
$rates['flat_rate:24'] -> 'Subsidized shipping fee:';
}
if ( $ship_cost == 100) {
$rates['flat_rate:24'] -> 'Flat rate shipping fee:';
}
}
return $rates;
}
Целью было бы изменить часть в HTML, которая гласит «Плата за доставку по фиксированной ставке:» в зависимости от стоимости платы за доставку. Любая помощь будет очень признательна.
Ответ №1:
Для определенного идентификатора скорости доставки, чтобы изменить отображаемый ярлык скорости доставки в зависимости от его стоимости, используйте:
add_filter('woocommerce_package_rates', 'custom_shipping_rate_label_based_on_cost', 100, 2)
function custom_shipping_rate_label_based_on_cost( $rates, $package ){
// Here your targeted shipping rate Id
$targeted_rate_id = 'flat_rate:24';
// Loop through available shipping rates
foreach ( $rates as $rate_key => $rate ) {
// Targetting specific rate Id
if( $targeted_rate_id === $rate_key ) {
$rate_cost = $rate->cost;
if ( $rate_cost < 100 ) {
$rate_label = __('Subsidized shipping fee');
}
elseif ( $rate_cost >= 100 ) {
$rate_label = __('Flat rate shipping fee');
}
if ( isset($rate_label) ) {
$rates[$rate_key]->label = $rate_label;
}
}
}
return $rates;
}
Код поступает functions.php файл вашей активной дочерней темы (или активной темы). Это должно работать.
Очистка кэша доставки:
- Вам нужно будет очистить корзину, чтобы очистить кэшированные данные о доставке
- Или в настройках доставки вы можете отключить / сохранить любой способ доставки, а затем включить возврат / сохранение.