/ Плагины / Изменение методов доставки в зависимости от условий

Изменение методов доставки в зависимости от условий

05.07.2020

123

При оформлении товара мы можем задавать условия для вывода методов доставки, а также менять их стоимость.

add_filter('woocommerce_package_rates','test_overwrite_fedex', 100, 2);
function test_overwrite_fedex($rates, $package) {
	
	if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return $rates;
	
	global $woocommerce;
	$cart_subtotal = floatval( preg_replace( '#[^\d.]#', '', $woocommerce->cart->get_cart_total() ) );

	foreach ($rates as $rate) {

		if ($rate->id == 'flat_rate:14') { 
			if ($cart_subtotal >= 1000) { 
				$rate->cost = 0; 
			}
		}
		
		if ($rate->id == 'flat_rate:15') { 
			if ($cart_subtotal >= 5000) { 
				$rate->cost = 0; 
			}
		}		
		
		/*if ($rate->id == 'free_shipping:11') { 
			unset($rates['free_shipping:11']);
		}*/
		
	}

	return $rates;
}

В данном примере при достижении сумм 1000 и 5000 методы доставки становятся бесплатными. Закомментирован код в котором отключается метод доставки.

Можно также создать условие в зависимости от состава корзины, т.е. содержится ли в ней определенный товар:

add_filter('woocommerce_package_rates', 'product_hide_shipping_method', 10, 2);
function product_hide_shipping_method( $rates, $package ){
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return $rates;

    // HERE set your Shipping Method ID to be removed
    $shipping_method_id = 'flat_rate:12';

    // HERE set your targeted product ID
    $product_id = 37;

    $found = false;

    // Loop through cart items and checking for the specific product ID
    foreach( $package['contents'] as $cart_item ) {
        if( $cart_item['data']->get_id() == $product_id )
            $found = true;
    }

    if( $found ){
        // Loop through available shipping methods
        foreach ( $rates as $rate_key => $rate ){
            // Remove the specific shipping method
            if( $shipping_method_id === $rate->id  )
                unset($rates[$rate->id]);
        }
    }
    return $rates;
}

Тэги: ,

Поделится информацией с друзьями

  • Похожие записи
  • Комментарии
  • Вложения
Трекинг заказа

Трекинг заказа

Рассмотрим такой аспект работы интернет-магазина как трекинг заказа (order tracking), т.е. отслеживание статуса и местоположения заказа. YITH WooCommerce Order Tracking 8000 установок. В бесплатной версии добавляет к заказу (в админке) Читать далее »

Технология акций на Woocommerce

Технология акций на Woocommerce

В одном из постов я анализировал плагины для создания массовых скидок (акций). В процессе этого мною был выработан довольно универсальный алгоритм создания акций. Переделка плагина Woo Product Category Discount Woo Читать далее »

Модификация Woocommerce

Модификация Woocommerce

Продолжаем серию модификаций модуля интернет коммерции Woocommerce. Скрыть колонки редактирования товаров add_filter( 'manage_edit-product_columns', 'change_columns_filter',10, 1 ); function change_columns_filter( $columns ) { unset($columns['product_tag']); unset($columns['sku']); unset($columns['featured']); return $columns; } Тоже самое можно Читать далее »

/ /

Добавить комментарий

Пока нет комментариев. Будь первым!

Изменение методов доставки в зависимости от условий
Форма подписки без плагина
Рекомендации для васФорма подписки без плагинаOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.