此问题已在此处有答案:
Apply a discount for a specific user role in Woocommerce(2个答案)
2个月前关闭。
这篇文章是编辑并提交审查22小时前.
我试图改变运费(包率)根据用户的角色。
如何从不含税的总价中管理运输成本?
有一个批发用户类型(wholesale_customer),然后还有其他用户角色(我们称之为“The Rest”),每个人都有相同的规则。
运输成本逻辑:
1.对于批发客户:
1.如果订单小计等于或超过70欧元,他们应该获得免费送货(删除标准运费)。
1.如果订单小计低于70欧元,则应收取10欧元的运费。
1.对于老客户:
1.如果订单小计等于或超过30欧元,他们应该获得免费送货(删除标准运费)。
1.如果订单小计低于30欧元,则应收取5欧元的运费。
您需要根据小计进行此计算,而不添加税。
已尝试以下代码:
// This is the way I try to manage shipping costs for "The rest" user
add_filter('woocommerce_package_rates', 'shipping_costs_for_retailers', 10, 2);
function shipping_costs_for_retailers($rates, $package) {
$user = wp_get_current_user();
$user_roles = $user->roles;
$subtotal = WC()->cart->subtotal;
if (!in_array('wholesale_customer', $user_roles) && $subtotal < 30) {
$new_rate = array();
foreach ($rates as $rate_id => $rate) {
$new_rate[$rate_id] = $rate;
$new_rate[$rate_id]->cost += 5;
}
return $new_rate;
}
return $rates;
}
add_filter('woocommerce_cart_totals_shipping_html', 'message_for_retailers');
function message_for_retailers($html) {
$user = wp_get_current_user();
$user_roles = $user->roles;
$subtotal = WC()->cart->subtotal;
if (!in_array('wholesale_customer', $user_roles) && $subtotal < 30) {
$html .= '<p>Shipping cost: $5.00</p>';
}
return $html;
}
// This is the way I try to manage shipping costs for wholesale users
add_filter('woocommerce_package_rates', 'shipping_ expenses_ for_wholesalers', 10, 2);
function shipping_ expenses_ for_wholesalers($rates, $package) {
$user = wp_get_current_user();
$user_roles = $user->roles;
$subtotal = WC()->cart->subtotal;
if (in_array('wholesale_customer', $user_roles) && $subtotal < 70) {
$new_rate = array();
foreach ($rates as $rate_id => $rate) {
$new_rate[$rate_id] = $rate;
$new_rate[$rate_id]->cost += 10;
}
return $new_rate;
}
return $rates;
}
add_filter('woocommerce_cart_totals_shipping_html', 'message_for_wholesalers');
function message_for_wholesalers($html) {
$user = wp_get_current_user();
$user_roles = $user->roles;
$subtotal = WC()->cart->subtotal;
if (in_array('wholesale_customer', $user_roles) && $subtotal < 70) {
$html .= '<p>Shipping cost: $10.00</p>';
}
return $html;
}
我该怎么做才能纠正这个问题?
我应该如何修改我的功能来管理不含税的价格?
你可以看到发生在我身上的事情的截图,当批发客户,在小计没有达到70欧元,但运费被停用,因为总超过70欧元
1条答案
按热度按时间khbbv19g1#
在我的回答之前,我澄清了一些关于你的代码的问题,你是在汽车中添加的所有费率中添加+10,例如,如果已经在购物车中添加了20,那么现在它是30,如果有第二次运输税15,那么它将是25,等等,所以10是在所有税中添加,但你在问题中说::“运费将是10欧元”,因此,我们添加一个零(0)所有订单的收费统一费率航运方法,我们添加10收费,我们需要的代码,我给所有步骤below
Step : 1、step : 2、step : 3、step : 4、step : 5、step : 6、step : 7、step : 8