Как получить минимальную сумму заказа для бесплатной доставки в woocommerce

Как я могу получить минимальную сумму заказа, необходимую для получения бесплатной доставки (woocommerce_free_shipping_min_amount, который находится в WooCommerce -> админка -> настройки - > доставка -> доставка -> минимальная сумма заказа ) в WooCommerce?

Я хочу отобразить эту цену на интерфейсной странице

2 ответов


это значение хранится в элементе option под ключ woocommerce_free_shipping_settings. Это массив, который загружается WC_Settings_API->init_settings().

если вы хотите получить доступ к нему напрямую можно использовать get_option():

$free_shipping_settings = get_option( 'woocommerce_free_shipping_settings' );
$min_amount = $free_shipping_settings['min_amount'];

принятый ответ больше не работает с версии 2.6 WooCommerce. Он по-прежнему дает выход, но этот выход неправильный, поскольку он не использует вновь введенные зоны доставки.

чтобы получить минимальную сумму расходов на бесплатную доставку в определенной зоне, попробуйте эту функцию, которую я собрал:

/**
 * Accepts a zone name and returns its threshold for free shipping.
 *
 * @param $zone_name The name of the zone to get the threshold of. Case-sensitive.
 * @return int The threshold corresponding to the zone, if there is any. If there is no such zone, or no free shipping method, null will be returned.
 */
function get_free_shipping_minimum($zone_name = 'England') {
  if ( ! isset( $zone_name ) ) return null;

  $result = null;
  $zone = null;

  $zones = WC_Shipping_Zones::get_zones();
  foreach ( $zones as $z ) {
    if ( $z['zone_name'] == $zone_name ) {
      $zone = $z;
    }
  }

  if ( $zone ) {
    $shipping_methods_nl = $zone['shipping_methods'];
    $free_shipping_method = null;
    foreach ( $shipping_methods_nl as $method ) {
      if ( $method->id == 'free_shipping' ) {
        $free_shipping_method = $method;
        break;
      }
    }

    if ( $free_shipping_method ) {
      $result = $free_shipping_method->min_amount;
    }
  }

  return $result;
}

поместите вышеуказанную функцию в функции.php и использовать его в шаблоне так:

$free_shipping_min = '45';

$free_shipping_en = get_free_shipping_minimum( 'England' );
if ( $free_shipping_en ) {
    $free_shipping_min = $free_shipping_en;
}

echo $free_shipping_min;

надеюсь, это поможет кому-то.