【发布时间】:2020-11-17 11:21:01
【问题描述】:
我正在尝试为我的 woocommerce 商店中的特定类别设置最低订购数量。我写了一段代码,但似乎购物车中的最低数量适用于所有类别,而不仅仅是我设置的类别(“nettoyage”)......我做错了什么?
这是我的代码(来自我的functions.php):
add_filter('woocommerce_quantity_input_args', 'bloomer_woocommerce_quantity_changes', 10, 2);
function bloomer_woocommerce_quantity_changes($args, $product)
{
if (!is_cart()) {
if (is_singular('product') && (has_term('nettoyage', 'product_cat'))) {
$args['input_value'] = 3; // Start from this value (default = 1)
$args['max_value'] = 10; // Max quantity (default = -1)
$args['min_value'] = 3; // Min quantity (default = 0)
$args['step'] = 1; // Increment/decrement by this value (default = 1)
}
}
return $args;
}
function sww_check_category_for_minimum()
{
// set the minimum quantity in the category to purchase
$min_quantity = 3;
// set the id of the category for which we're requiring a minimum quantity
$category_id = 40;
// get the product category
$product_cat = get_term($category_id, 'product_cat');
$category_name = '<a href="' . get_term_link($category_id, 'product_cat') . '">' . $product_cat->name . '</a>';
// get the quantity category in the cart
$category_quantity = sww_get_category_quantity_in_cart($category_id);
if ($category_quantity < $min_quantity) {
// render a notice to explain the minimum
wc_add_notice(sprintf('You must order at least 3 products from the %2$s category to be able to order!', $min_quantity, $category_name), 'error');
}
}
add_action('woocommerce_check_cart_items', 'sww_check_category_for_minimum');
//Returns the quantity of products from a given category in the WC cart
function sww_get_category_quantity_in_cart($category_id)
{
// get the quantities of cart items to check against
$quantities = WC()->cart->get_cart_item_quantities();
// start a counter for the quantity of items from this category
$category_quantity = 0;
// loop through cart items to check the product categories
foreach ($quantities as $product_id => $quantity) {
$product_categories = get_the_terms($product_id, 'product_cat');
// check the categories for our desired one
foreach ($product_categories as $category) {
// if we find it, add the line item quantity to the category total
if ($category_id === $category->term_id) {
$category_quantity += $quantity;
}
}
}
return $category_quantity;
}
【问题讨论】:
标签: php wordpress woocommerce taxonomy-terms product-quantity