除了购物车页面上的非批发用户外,我的工作正常。
要求:
at seminair.SendMail.send(SendMail.java:55)
at seminair.UserInfo.getDefaultUserInJSON(UserInfo.java:18)
current_user_can('wholesale')
这应该可以,但是,当我需要它来影响批发用户时,它会将购物车中的规则应用于所有用户。
has_term( 'mug', 'product_tag')
答案 0 :(得分:2)
更新:我已经测试了您的代码,并且有一些陈词滥调和错误。
第一个函数似乎有效,但存在一些错误,建议不要对用户角色使用current_user_can()
条件函数。您不需要else中的所有属性键,因为大多数默认值已经 1
......
第二个功能键'input_value'
和“步骤”没有任何效果,因为 $args
数组中不存在(请参阅下面的官方代码段或此挂钩的源代码)。有一些缺少的参数,如$product
。
在两个函数中都存在一些错误。我已将is_checkout()
替换为is_product()
,因为您定位的是单个产品页面和购物车页面。正如您在问题中提到的那样。
您应该检查并确保正确的批发用户角色slug是
'wholesale'
(例如'wholesale_customer'
} 中可能是add_filter( 'woocommerce_quantity_input_args', 'custom_quantity_input_args', 10, 2 ); function custom_quantity_input_args( $args, $product ) { $user = wp_get_current_user(); // Get current WP_User if ( ! ( is_cart() || is_product() ) ) return $args; if ( ! in_array( 'wholesale', $user->roles ) ) return $args; $product_id = $product->is_type('variation') ? $product->get_parent_id() : $product->get_id(); if ( ! has_term( 'mug', 'product_tag', $product_id ) ) return $args; // $args['input_value'] = 36; // Start from this value (default = 1) $args['min_value'] = 36; // Min value (default = 0) $args['step'] = 36; // Quantity steps (default = 1) return $args; } add_filter( 'woocommerce_available_variation', 'custom_qty_available_variation_args', 10, 3 ); function custom_qty_available_variation_args( $data, $product, $variation ) { $user = wp_get_current_user(); // Get current WP_User if ( ! ( is_cart() || is_product() ) ) return $data; if ( ! in_array( 'wholesale', $user->roles ) ) return $data; $product_id = $product->is_type('variation') ? $product->get_parent_id() : $product->get_id(); if ( ! has_term( 'mug', 'product_tag', $product_id ) ) return $data; $data['min_qty'] = 36; // Minimum value (default = 1) $args['input_value'] = 36; // Start from this value (default = 1) $args['min_value'] = 36; // Min value (default = 0) $args['step'] = 36; // Quantity steps (default = 1) return $data; }
。
您可以查看此官方WooCommerce代码段中的代码:this question ...
此修改后的代码现在也可以在购物车页面上使用:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
collectionView.touchesBegan(touches, with: event)
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
collectionView.touchesEnded(touches, with: event)
}
override func touchesCancelled(_ touches: Set<UITouch>?, with event: UIEvent?) {
collectionView.touchesCancelled(touches!, with: event)
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
collectionView.touchesMoved(touches, with: event)
}
代码放在活动子主题(或活动主题)的function.php文件中。
经过测试,几乎正常工作。
似乎购物车页面中存在错误。即使您增加和更新简单产品和变体产品的数量,产品也会被困在36上......