根据url中的查询字符串删除woocommerce运送

时间:2019-01-08 09:15:59

标签: wordpress woocommerce

我在网站上有两种送货方式,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,因此没有从我的代码中返回任何运送方法。

请为我提供实现此目标的正确方法。谢谢。

0 个答案:

没有答案