У меня есть два способа доставки на сайт: 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, и из-за этого ни один метод доставки не возвращается из моего кода.
Пожалуйста, наведите меня на правильный путь для достижения этой цели. благодарю вас.