WooCommerce: проверьте, бесплатна ли доставка заказа

Отображаю информацию о необходимой сумме для бесплатной доставки.

Нравится:

Добавьте еще 10 долларов и получите бесплатную доставку

Все это работает нормально и основано на фиксированной сумме бесплатной доставки. Моя проблема теперь в том, что он также будет отображаться, даже если купон устанавливает бесплатную доставку. Есть ли способ проверить, используется ли в заказе какой-либо метод бесплатной доставки?

Я кое-что нашел здесь: https://stackoverflow.com/a/32932933/1788961

global $woocommerce;
$shipping_methods = $woocommerce->shipping->load_shipping_methods();
if($shipping_methods['free_shipping']->enabled == "yes")

Но это не помогает.

Я также нашел здесь интересный фрагмент: https://www.businessbloomer.com/woocommerce-hide-shipping-options-free-shipping-available/

$all_free_rates = array();
     
foreach ( $rates as $rate_id => $rate ) {
      if ( 'free_shipping' === $rate->method_id ) {
         $all_free_rates[ $rate_id ] = $rate;
         break;
      }
}
     
if ( empty( $all_free_rates )) {
        return $rates;
} else {
        return $all_free_rates;
} 
 
}

person Cray    schedule 11.08.2020    source источник


Ответы (1)


Думаю, я решил это:

// Loop though shipping packages
foreach ( WC()->shipping->get_packages() as $key => $package ) {
    // Loop through Shipping rates
    foreach($package['rates'] as $rate_id => $rate ){
        $check_method_shipping = $rate->method_id;
    }
}

И после этого вы можете использовать его так:

if ($check_method_shipping != 'free_shipping') :
person Cray    schedule 11.08.2020