如何在woocommerce中为不同的用户角色设置不同的最低订单金额


how to set different minimum order amount for free shipping for different user roles in woocommerce

我想为不同的用户角色设置不同的最低订单价格,以便免费送货。

我如何实现它?

我目前正在使用下面的代码。

add_filter( 'woocommerce_available_shipping_methods', 'filter_woocommerce_available_shipping_methods');

filter_woocommerce_available_shipping_methods()函数:

function filter_woocommerce_available_shipping_methods( $methods ) {
    global $woocommerce;
            get_currentuserinfo();
            global $current_user;
             $roles = $current_user->roles[0];
            if($roles == '')
                {
                    $roles = 'subscriber';
                }
    $shippingrate = new WC_Shipping_Rate();
    $shippingrate->id = 'free_shipping';
    $shippingrate->label = 'Kostenloser Versand';
    $shippingrate->cost = '0';
    $shippingrate->method_id = 'free_shipping';
     if ( $roles == 'corporate' && $woocommerce->cart->subtotal_ex_tax >= 50   )  {
      unset($methods);
      $methods = array();
      $methods['free_shipping'] = $shippingrate;
    }
   else if ( ( $roles == 'retail' && $woocommerce->cart->subtotal_ex_tax >= 80 ) || ( $roles == 'gastronomy' && $woocommerce->cart->subtotal_ex_tax >= 80) ) {
      unset($methods);
      $methods = array();
      $methods['free_shipping'] = $shippingrate;
    }
    else if( $roles == 'distributor' && $woocommerce->cart->subtotal_ex_tax >= 400 )  {
      unset($methods);
      $methods = array();
      $methods['free_shipping'] = $shippingrate;
    }
    else if( $roles == 'distributor' && $woocommerce->cart->subtotal_ex_tax >= 400 )  {
      unset($methods);
      $methods = array();
      $methods['free_shipping'] = $shippingrate;
    }
    else if( $roles == 'subscriber' && $woocommerce->cart->subtotal_ex_tax >= 45 )  {
      unset($methods);
      $methods = array();
      $methods['free_shipping'] = $shippingrate;
    }
    return $methods;
}

你考虑过使用插件吗?我已经创建了一个插件,可以配置条件,包括基于用户角色。

https://wordpress.org/plugins/woocommerce-advanced-free-shipping/