Как я могу получить минимальную сумму заказа, необходимую для получения бесплатной доставки ( woocommerce_free_shipping_min_amount
которая установлена в woocommerce панели администратора -> настройки -> доставка -> бесплатная доставка -> минимальная сумма заказа) в woocommerce?
Я хочу отобразить эту цену на первой странице
Это значение сохраняется в 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'];
Принятый ответ больше не работает с 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;
Надеюсь, это поможет кому-то.