Удалить WooCommerce доставки на основе строки запроса в URL - PullRequest
0 голосов
/ 08 января 2019

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

Пожалуйста, наведите меня на правильный путь для достижения этой цели. благодарю вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...