目标:我想根据用户拥有的密码为不同的支付网关添加不同的运费。
尝试使用运输区域:
我的 woo-commerce 仪表板中添加了 3 个不同的运输区域。所有区域都是使用城市的密码和统一费率创建的。但是,如果 PIN 码存在于多个区域中,那么顶级区域将获得第一优先权,而所有其他区域在结账页面将被忽略。
现在我想根据支付网关用户选择更改该区域。例如,用户“A”的密码为“123456”,此密码存在于两个发货区:“SH1”、“SH2”。因此,如果用户选择了“货到付款”选项,那么我想在激活“SH2”的同时为他禁用运输区域“SH1”。
这是我尝试过的代码,但不起作用。
add_filter( 'woocommerce_available_payment_gateways', 'change_user_zone', 20, 1);
function change_user_zone( $gateways ){
$targeted_zones_names = array('COD FCity'); // Targeted zone names
$current_payment_gateway = WC()->session->get('chosen_payment_method'); // Selected payment gateway
// Current zone name
$chosen_methods = WC()->session->get( 'chosen_shipping_methods' ); // The chosen shipping mehod
$chosen_method = explode(':', reset($chosen_methods) );
$shipping_zone = WC_Shipping_Zones::get_zone_by( 'instance_id', $chosen_method[1] );
$current_zone_name = $shipping_zone->get_zone_name();
if($current_payment_gateway === "cod" && $current_zone_name === "COD FCity"){
$WC_Shipping_Zone = new WC_Shipping_Zone();
$var = $WC_Shipping_Zone->set_zone_locations( "India - Maharashtra - Mumbai" );
}
return $gateways;
}
请帮忙!
注意:我正在寻找编码解决方案。如果您想为此建议任何插件,请使用评论部分。
jeck猫