我在网站上有两种送货方式,flat_rate和local_pickup。在结帐页面上,我要求用户进行选择,例如,您要送货还是取货?当用户选择该选项时,我将刷新页面并将选择作为查询字符串传递,例如:www.mysite.com/shipping=pickup。
因此,如果用户选择取件,我想从发货选项中删除flat_rate。和选择交付时相同,我想删除local_pickup方法。
这是我正在使用的代码:
/* add shipping variable to query variables */
function add_query_var_for_shipping(){
add_filter( 'query_vars', 'add_query_vars_filter', 1000 );
}
add_action('init', 'add_query_var_for_shipping', 999);
function add_query_vars_filter( $vars ){
$vars[] = "shipping";
return $vars;
}
add_filter( 'woocommerce_package_rates', 'free_shipping_disable_flat_rate' );
function free_shipping_disable_flat_rate( $rates ) {
if(get_query_var('shipping') == 'pickup'){
foreach ( $rates as $rate_key => $rate ) {
if ( 'flat_rate' === $rate->method_id ){
unset($rates[$rate_key]);
return $rates;
}
}
}
if(get_query_var('shipping') == 'delivey'){
foreach ( $rates as $rate_key => $rate ) {
if ( 'local_pickup' === $rate->method_id ){
unset($rates[$rate_key]);
return $rates;
}
}
}
}
它看起来像get_query_var('shipping')返回null,因此没有从我的代码中返回任何运送方法。
请为我提供实现此目标的正确方法。谢谢。