Я хочу изменить название метода доставки, отображаемое в кассе моего магазина, в зависимости от класса доставки, который имеется в продукте.
например
Название способа доставки в настоящее время является фиксированной ставкой и у меня есть 2 продукта:
К сожалению, я должен сделать свою доставку, используя классы, чтобы альтернативные методы не работали.
Любая помощь будет оценена.
Следующий код переименует вашу фиксированную стоимость доставки в зависимости от вашего класса доставки «Хрупкая»:
Вам может потребоваться «Включить режим отладки» в общих настройках доставки на вкладке «Параметры доставки», чтобы временно отключить кэши доставки.
Код:
add_filter('woocommerce_package_rates', 'change_shipping_method_name_based_on_shipping_class', 50, 2);
function change_shipping_method_name_based_on_shipping_class($rates, $package){
// HERE set the shipping class for "Fragile"$shipping_class_id = 64;
$found = false;
// Check for the "Fragile" shipping class in cart items
foreach( $package['contents'] as $cart_item ) {
if( $cart_item['data']->get_shipping_class_id() == $shipping_class_id ){
$found = true;
break;
}
}
// Loop through shipping methods
foreach ( $rates as $rate_key => $rate ) {
// Change "Flat rate" Shipping method label name
if ( 'flat_rate' === $rate->method_id ) {
if( $found )
$rates[$rate_key]->label = __( 'Fragile shipping', 'woocommerce' );
else
$rates[$rate_key]->label = __( 'Standard shipping', 'woocommerce' );
}
}
return $rates;
}
Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.
Не забудьте снова включить опцию «Включить режим отладки» в настройках доставки.