我需要添加两个不同的运费,这取决于用户的角色,使购买。我的角色是“wholesale_customer”,不应支付运费。但是,如果购物车的小计等于或小于€90,则必须阻止购买,并在结账时添加消息。(请记住,您必须达到90欧元的金额)
另一个选项是所有其他WordPress角色,如果他们的购物车小计为40欧元或更少,则需要支付5欧元的运费。
我已经在WooCommerce中配置了航运,我已经创建了两种免费送货方式,最低订单金额为40欧元,另一种为90欧元。
问题是,具有“wholesale_customer”角色的用户,当他达到€40的金额时,也被启用该免费送货方法,这不应该发生,因为对于此用户角色(“wholesale_customer”),如果购买超过€90的最低金额,则送货是免费的。
我以以下方式在WooCommerce中配置了发货,创建了2种发货方法:- 一个有“最低数量要求”在€90
- 另一个有“最低数量要求”在€40
- 其中一个运费为0欧元。
我已经尝试添加以下功能来添加以获得我所需要的,但所有的运输方法始终启用,所以零售运输方法的“最低€40免费送货”,也被激活的用户与角色批发_客户'这不应该发生,作为用户与此角色将受益于不是他们的好处.
我展示了一些代码,我已经尝试做我正在寻找的,因为我做了大量的测试。只有我没有办法添加我在演示文稿中提到的角色'wholesale_customer'的文本显示WooCommerce设置的图像
function custom_shipping_methods_visibility( $available_methods ) {
$subtotal = WC()->cart->subtotal;
$user = wp_get_current_user();
$user_roles = $user->roles;
// Check user role and cart subtotal to show/hide shipping methods
if ( in_array( 'wholesale_customer', $user_roles ) && $subtotal <= 70 ) {
unset( $available_methods['flat_rate:13'] );
} elseif ( $subtotal <= 30 ) {
unset( $available_methods['flat_rate:9'] );
}
return $available_methods;
}
add_filter( 'woocommerce_package_rates', 'custom_shipping_methods_visibility', 10, 1 );
////////////////////
// Adds a custom function to filter shipping methods based on cart role and subtotal
function custom_shipping_methods( $available_methods ) {
// Get cart subtotal
$subtotal = WC()->cart->subtotal;
// Gets the role of the current user
$user = wp_get_current_user();
$user_roles = $user->roles;
//Check user role and cart subtotal to adjust shipping methods
if ( in_array( 'wholesale_customer', $user_roles ) && $subtotal < 70 ) {
foreach ( $available_methods as $method_id => $method ) {
// Hide the shipping methods if the user is a wholesaler and the subtotal is less than €70
unset( $available_methods[ $method_id ] );
}
// Show a warning message
wc_add_notice( 'Debes alcanzar un mínimo de 70€ en tu carrito para realizar el pedido.', 'error' );
}
return $available_methods;
}
add_filter( 'woocommerce_package_rates', 'custom_shipping_methods', 10, 1 );
配置-1
配置-2:
配置-3:
配置-4:
1条答案
按热度按时间vltsax251#
首先,为了防止“wholesale_customer”用户在购物车小计小于€90时下订单,以下代码将:
对于运输方式,您的设置是正确的。
以下代码将根据您的用户角色(“wholesale_customer”和“customer”)和免费送货的最低购物车小计金额显示/隐藏送货方法。
对于“wholesale_customer”,所有运输方式将被禁用,直到购物车小计达到€90。
当免费送货将是可用的,所有其他运输方式将被隐藏。
对于您的2免费送货方式中的每一种,您都需要获得正确的运费ID。
如果购物车小计高于€90,请在您的结账页面送货部分,检查显示的每个免费送货选项的单选按钮(请参阅下面的屏幕截图):
现在您可以在下面的代码中设置您的两个免费送货方法速率ID:
代码放在活动子主题(或活动主题)的functions.php文件中。测试和作品。
保存代码后,要刷新运输方式缓存数据,请不要忘记清空购物车 (或在Woocommerce运输设置中禁用,保存和启用,保存当前运输区域的相关运输方式)。