以下版本的更新后的问题
我有一个woocommerce网站,我有几个不同的运输选项。我需要隐藏并显示这些运输选项,具体取决于“运送到不同地址按钮被检查”
//remove local pickup
function ddc_hide_shipping( $rates, $package ) {
unset( $rates['local_pickup'] );
return $rates;
}
//check if needs shipping address so we can unset local pickup
function ddc_update_shipping_options($instance) {
parse_str(html_entity_decode($instance), $postData);
if ( @$postData['ship_to_different_address'] ) {
add_filter('woocommerce_package_rates', 'ddc_hide_shipping');
}
}
add_action('woocommerce_checkout_update_order_review', 'ddc_update_shipping_options');
使用从Scriptonomy得到的上述代码,我越来越近了。我遇到的问题,当用户检查并取消检查到不同的帐单地址时,这似乎不起作用。这仅适用于首页加载,而不适用于每次更新订单查看区域的ajax调用。
谢谢。
答案 0 :(得分:0)
WC() - > cart-> needs_shipping_address()基于商店设置和商品设置...所以在这种情况下不理想,在大多数情况下每次都会触发。
使用$ instance数据代替,这是一个url编码的字符串。
这是您的解决方案:
parse_str(html_entity_decode($instance), $postData);
if ( @$postData['ship_to_different_address'] ) {
add_filter( 'woocommerce_package_rates', 'ddc_hide_shipping', 10, 2 );
}
把它放在你的动作钩子里。