Сложная проблема с правилами доставки WoocommercePhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Сложная проблема с правилами доставки Woocommerce

Сообщение Anonymous »

Я пытаюсь применить сложные правила доставки в Woocommerce.
У меня есть базовые продукты:




Расходы
Доставка стоимость




менее 300
30 долларов


300 или более
Бесплатно




Но у меня также есть несколько крупных товаров и товаров с особыми требованиями к доставке




продукт
Класс доставки
стоимость


< tbody>

большой ящик
Грузовик с кран
1000$


большая коробка
Только грузовик
200 долларов США


Беседка (Вариант 1: только доставка) )
Доставка и Сборка
200$


Беседка (Вариант 2: Доставка и сборка)
Доставка и сборка
350$


< /table>

Ниже приведены мои способы доставки.
Способы доставки.
Стандартные тарифы.
Доставка в сборе.
Для основных продуктов все работает хорошо.
Для больших коробок все работает хорошо, как показано в стандартной доставке.
Но когда я добавляю способ доставки (доставка со сборкой), он по-прежнему отображается в качестве выбора, даже если нет продукта с этот класс находится в корзине.
Мне просто нужно, чтобы он появлялся только тогда, когда беседка находится в корзине

Код: Выделить всё

add_filter( 'woocommerce_package_rates', 'hide_shipping_when_class_is_in_cart', 100, 2 );
function display_shipping_when_class_is_in_cart($rates, $package) {

Код: Выделить всё

$free_shipping_method = 'free_shipping:13';
$shipping_classes = array('truck-crane','large-furniture','furniture-assembly');
$class_exists = false;
$cart_classes = array();
$shipping_methods = $shipping_zone->get_shipping_methods();

foreach( $package['contents'] as $cart_item )
$cart_item_class = $cart_item['data']->get_shipping_class();
if( in_array($cart_item_class ,  $shipping_classes ) ) {//Check if any shipping class exist
array_push($cart_classes,$cart_item_class); //push cart classes to array
$class_exists = true;
//break;
}

foreach($shipping_methods as $method){
$method_classes = $method->get_shipping_classes();

//Here i want to unset shipping methods which has no avaiable class in cart items

}

if( $class_exists )
unset( $rates[$free_shipping_method] );

return $rates;


Подробнее здесь: https://stackoverflow.com/questions/736 ... ules-issue
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»