升级到Woocommerce 2.6之后,我决定使用新的Shipping Zones功能,我已经打破了我的功能,计算与购物车价值的差异,以便免费送货。
我曾经获得免费送货价值,如:
$shipping_methods = $woocommerce->shipping->load_shipping_methods();
$free_shipping = $shipping_methods['free_shipping'];
$cart_total = $woocommerce->cart->cart_contents_total;
$minimum_amount_required = floatval($free_shipping->min_amount);
$diff = $minimum_amount_required - $cart_total;
但是现在情况发生了变化,我想使用运输区。 那么如何才能获得免运费所需的最低金额?我已经从选项中设置了值,我已经尝试了
$shipping = new WC_Shipping_Free_Shipping();
返回
object(WC_Shipping_Free_Shipping)#9235 (22) {
["min_amount"]=>
string(1) "0"
["requires"]=>
string(0) ""
["supports"]=>
array(3) {
[0]=>
string(14) "shipping-zones"
[1]=>
string(17) "instance-settings"
[2]=>
string(23) "instance-settings-modal"
}......
虽然我在设置中设置了一个数量,但它返回0.
答案 0 :(得分:1)
经过一段时间的搜索(我有同样的错误),我意识到你需要在试图获得可用的运输方式时给你的包裹。
load_shipping_method
中的套餐参数是可选的,但WC无法获取min_amount
数量,因此将此值设置为“0”。这是因为您可以设置多个min_amount
(每个区域一个)。
你可以得到这样的包裹:
$packages = WC()->cart->get_shipping_packages();
对于多个包装支持,您必须对每个包进行迭代,然后您可以使用以下方法获取方法:
//In $available_methods you must have initialised your free_shipping min_amount value.
$available_methods = WC()->shipping()->load_shipping_methods($packages[i]);
我希望这会对你有帮助!
答案 1 :(得分:0)
你可以使用:
$free_shipping_settings = get_option( 'advanced_free_shipping_settings' );
$min_amount = $free_shipping_settings['min_amount'];
我已经习惯了,但它会返回NULL结果,但你可以尝试一下。也许和你一起工作。