设置WooCommerce中特定产品或类别的最低订购量 [英] Set minimum Order amount for specific Products or Categories in WooCommerce

查看:137
本文介绍了设置WooCommerce中特定产品或类别的最低订购量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经进行了广泛的搜索,看看其他人是否也遇到这种情况,并且没有运气就得到了答案。

I've searched extensively to see if other folks had this situation and received an answer with no luck.

基本上,我有两个客户可以添加到他们的商品中大车。我要这样做,以便如果小计不超过$ 15的商品,则无法使用其中任何一个商品结账。

Essentially, I have two items customers can add to their cart. I want to make it so they cannot checkout with either of those items if their subtotal is not $15 or more.

具有将ID放入代码中的功能将没事的。或者,我可以将它们分配给同一类别,并按类别设置此最小值。

Having the ability to just drop their IDs into the code would be fine. Or, I can assign them to the same category and set this minimum by category.

到目前为止,我所拥有的只是基本PHP,它设置了一个通用的最小值。我只需要一些帮助来弄清楚如何限制它以满足我的需求。

So far all I have is the basic PHP that sets a universal minimum. I just need some help figuring out how to limit this to meet my needs.

我不是设计师,而是开发人员,因此非常感谢您。

I'm a designer not a dev, so any help is much appreciated.

    // Set a minimum dollar amount per order
add_action( 'woocommerce_check_cart_items', 'spyr_set_min_total' );
function spyr_set_min_total() {
    // Only run in the Cart or Checkout pages
    if( is_cart() || is_checkout() ) {
        global $woocommerce;

        // Set minimum cart total
        $minimum_cart_total = 10;

        // Total we are going to be using for the Math
        // This is before taxes and shipping charges
        $total = WC()->cart->subtotal;

        // Compare values and add an error is Cart's total
        // happens to be less than the minimum required before checking out.
        // Will display a message along the lines of
        // A Minimum of 10 USD is required before checking out. (Cont. below)
        // Current cart total: 6 USD 
        if( $total <= $minimum_cart_total  ) {
            // Display our error message
            wc_add_notice( sprintf( '<strong>A Minimum of %s %s is required before checking out.</strong>'
                .'<br />Current cart\'s total: %s %s',
                $minimum_cart_total,
                get_option( 'woocommerce_currency'),
                $total,
                get_option( 'woocommerce_currency') ),
            'error' );
        }
    }
}


推荐答案

2020更新

仅为购物车和结帐页面设置购物车中某些产品类别或产品ID的最小值。

此未经测试的片段由 制成 < wooThemes的 strong> this 也是

This untested snippet made of this and this from wooThemes, and this too:

add_action( 'woocommerce_checkout_process', 'wc_minimum_order_amount' );
add_action( 'woocommerce_before_cart' , 'wc_minimum_order_amount' );
 
function wc_minimum_order_amount() {
    ##  SETTINGS  ##
    $minimum_amount = 50; // Define a minimum order amount
    $category_ids   = array( 17, 18 ); // Define your category ids in the array (or an empty array to disable)
    $product_ids    = array( 64, 67, 78 ); // Define your product ids in the array (or an empty array to disable)

    // Only on cart or checkout pages
    if( WC()->cart->is_empty() || ! ( is_cart() || is_checkout() ) ) 
        return; // Exit

    $total_amount = WC()->cart->subtotal; // Items subtotal including taxes

    if ( $total_amount < $minimum_amount ) {
        $needs_minimum_amount = false; // Initializing

        // Loop through cart items
        foreach ( WC()->cart->get_cart() as $cart_item ) {
            $product_id   = $cart_item['product_id'];
            $variation_id = $cart_item['variation_id'];
            
            // 1. Check for matching product categories
            if( sizeof($category_ids) > 0 ) {
                $taxonomy = 'product_cat';

                if ( has_term( $category_ids, $taxonomy, $product_id ) ) { 
                    $needs_minimum_amount = true;
                    break; // Stop the loop
                }
            }

            // 2. Check for matching product Ids
            if( sizeof($product_ids) > 0 ) {
                if ( array_intersect( $product_ids, array($product_id, $variation_id) ) ) { 
                    $needs_minimum_amount = true;
                    break; // Stop the loop
                }
            }
        }

        if( $needs_minimum_amount ) {
            wc_print_notice( sprintf( 
                __("You must have an order with a minimum of %s to place your order. Your current order total is %s."), 
                wc_price( $minimum_amount ), 
                wc_price( $total_amount )
            ), 'error' );
        }
    }
}

代码进入活动目录的functions.php文件子主题(活动主题)。经过测试并有效。

Code goes in functions.php file of your active child theme (active theme). Tested and works.

您可以设置类别ID,产品ID和最小订单金额。

You can set your categories ID's, your products ID's and the minimum order value amount.


— —…我很重要…注…— —

— — … I m p o r t a n t … N o t e … — —

此钩子适用于消息。但是要避免用户点击,您需要添加Javascript / jQuery,也可能需要添加ajax(客户端检测)。

This hooks are working for messages. But to avoid users from clicking you need to add Javascript/jQuery and maybe with ajax too (client side detection).

这篇关于设置WooCommerce中特定产品或类别的最低订购量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆