我已经为客户建立了Woocommerce礼品店。 他们的客户是其他业务,他们的员工可以通过网上商店选择礼物。每个企业都有1个所有员工都使用的登录名。 截至目前,每个用户只能在其购物车中购买1件物品。 如果选择了其他产品,它将覆盖以前的产品。
今天,我得知他们希望扩大规模,因此有选择的用户/用户角色有可能在其购物车中购买1种以上产品并“购买”它们。 金钱交易不会直接在网上商店中处理,因此购买产品会将清单发送给我的客户,然后他们从那里获取
我用于施加此限制的当前代码如下:
add_filter( 'woocommerce_add_to_cart_validation', 'custom_only_one_in_cart', 99, 2 );
function custom_only_one_in_cart( $passed, $added_product_id ) {
// empty cart first: new item will replace previous
wc_empty_cart();
// display a message if you like
wc_add_notice( 'Max number of items in cart reached!', 'notice' );
return $passed;
}
因此,我正在寻找有关如何对特定用户或用户角色实施此操作的想法,因此最终结果将是大多数用户只能选择一个,而少数选择的用户可以选择更多。
我一直在寻找合适的解决方案,但到目前为止我还没有找到一个解决方案。
该解决方案不必在当前状态或变体中都包含我提供的代码,欢迎所有合适的解决方案。
感谢您的帮助。
答案 0 :(得分:0)
在下面的代码中,将根据已定义的允许用户角色将添加到购物车的限制仅限于一项:
add_filter( 'woocommerce_add_to_cart_validation', 'user_roles_only_one_in_cart', 50, 3 );
function user_roles_only_one_in_cart( $passed, $product_id, $quantity ) {
// HERE define the User roles that are allowed to buy multiple items:
$allowed_user_roles = array('special_customer','administrator', 'shop_manager');
$user = wp_get_current_user();
if( array_intersect( $allowed_user_roles, $user->roles ) )
return $passed;
// Check if cart is empty
if( ! WC()->cart->is_empty() ){
// display an error notice
wc_add_notice( __("Only one item in cart is allowed!", "woocommerce"), "error" );
// Avoid add to cart
$passed = false;
}
return $passed;
}
代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。
对于用户角色的创建和管理,您可以使用User Role Editor插件(例如)。