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

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

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

7

Решение

Это значение хранится в 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'];
8

Другие решения

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

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

/**
* 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;
}

Поместите вышеуказанную функцию в functions.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;

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

2

По вопросам рекламы [email protected]