我一直在使用以下内容来确定结帐字段是否需要完成...
if ($posted['shipping_method'] == "local_pickup_plus") {
}
自从更新到WooCommerce 2.1后,我的代码不再有效。
我试图回应$ posted ['shipping_method']中存储的值,看看我是否按照正确的值检查它,但似乎没有任何内容存储在此变量中。
我一直在寻找其他方法来检查选择的送货方式,但我没有走得太远。
非常感谢任何协助。
答案 0 :(得分:11)
一直在寻找这个,然后决定深入研究WooCommerce文件......
这似乎对我有用:
$chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
$chosen_shipping = $chosen_methods[0];
我正在使用它来设置本地交付的最小总数,在我的函数中使用它.php
add_action( 'woocommerce_cart_calculate_fees','woocommerce_custom_surcharge' );
function woocommerce_custom_surcharge() {
global $woocommerce;
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
$chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
$chosen_shipping = $chosen_methods[0];
$min_spend = 25;
$cart_total = $woocommerce->cart->cart_contents_total;
if (($cart_total < 25) AND ($chosen_shipping == 'local_delivery')) {
$surcharge = $min_spend-$cart_total;
$woocommerce->cart->add_fee( 'Delivery Surchage', $surcharge, true, 'standard' );
}
}
希望这可以帮助别人。
答案 1 :(得分:0)
来自WooCommerce 2.1的source code:
$this->posted['shipping_method'] = isset( $_POST['shipping_method'] ) ? $_POST['shipping_method'] : '';
因此,如果未设置变量$_POST['shipping_method']
,则$posted['shipping_method']
将为空字符串。我的猜测是,您的form
没有将method
属性设置为post
(可能会省略它,或者您尝试使用链接进行产品提交,而不是form
)
答案 2 :(得分:0)
$ _ POST ['shipping_method']是一个数组,$ whatever = $ _POST ['shipping_method'],$ whatever [0] = value