在 WooCommerce 中为特定邮政编码设置最低订购量

Posted

技术标签:

【中文标题】在 WooCommerce 中为特定邮政编码设置最低订购量【英文标题】:Set a minimum order amount for specific postcodes in WooCommerce 【发布时间】:2021-04-07 21:31:40 【问题描述】:

以下代码基于 WooCommerce 的官方代码 sn-p 设置了最低要求的总金额,以便能够结帐:

add_action( 'woocommerce_checkout_process', 'wc_minimum_order_amount' );
add_action( 'woocommerce_before_cart' , 'wc_minimum_order_amount' );
function wc_minimum_order_amount() 
    // Set this variable to specify a minimum order value
    $minimum = 50;

    if ( WC()->cart->total < $minimum ) 

        if( is_cart() ) 
            wc_print_notice( 
                sprintf( 'Your current order total is %s — you must have an order with a minimum of %s to place your order ' , 
                    wc_price( WC()->cart->total ), 
                    wc_price( $minimum )
                ), 'error' 
            );
         else 
            wc_add_notice( 
                sprintf( 'Your current order total is %s — you must have an order with a minimum of %s to place your order' , 
                    wc_price( WC()->cart->total ), 
                    wc_price( $minimum )
                ), 'error' 
            );
        
    

如何在 WooCommerce 中设置某个最低订单金额,但仅限于特定邮政编码?

感谢任何帮助。

【问题讨论】:

【参考方案1】:

要在 WooCommerce 中为特定邮政编码设置最低订购量,请尝试以下操作:

add_action( 'woocommerce_checkout_process', 'wc_minimum_order_amount' );
add_action( 'woocommerce_before_cart' , 'wc_minimum_order_amount' );
function wc_minimum_order_amount() 
    $minimum   = 50; // Set the minimum order value
    $postcodes = array('99152', '99154'); // Define your targeted postcodes in the array
    $postcode  = ''; // Initializing

    if ( isset($_POST['shipping_postcode']) && ! empty($_POST['shipping_postcode']) ) 
        $postcode = $_POST['shipping_postcode'];
        if ( empty($postcode) && isset($_POST['billing_postcode']) && ! empty($_POST['billing_postcode']) ) 
            $postcode = $_POST['billing_postcode'];
        
     elseif ( $postcode = WC()->customer->get_shipping_postcode() ) 
        if ( empty($postcode) ) 
            $postcode = WC()->customer->get_billing_postcode();
        
    

    if ( WC()->cart->total < $minimum && ! empty($postcode) && in_array( $postcode, $postcodes ) ) 
        $error_notice = sprintf( 'Your current order total is %s — you must have an order with a minimum of %s to place your order ' , 
            wc_price( WC()->cart->total ), 
            wc_price( $minimum )
        );

        if( is_cart() ) 
            wc_print_notice( $error_notice, 'error' );
         else 
            wc_add_notice( $error_notice, 'error' );
        
    

代码进入活动子主题(或活动主题)的functions.php 文件中。经过测试并且可以工作。

【讨论】:

太棒了!在我的情况下,我实际上有两个具有不同最小订购量的邮政编码数组,我该如何实现呢?而且我所在国家/地区的邮政编码格式如下:1111 AA。但是该规则也应该适用于所有带有 1111 的邮政编码,无论后面的两个字母是什么。我将如何实现它?

以上是关于在 WooCommerce 中为特定邮政编码设置最低订购量的主要内容,如果未能解决你的问题,请参考以下文章

Woocommerce 为特定用户角色设置最低订单

在 Woocommerce 中为特定产品类别使用自定义单个产品模板

在 WooCommerce 中为特定用户角色创建订单时添加额外的客户注释

如何在 WooCommerce 中为未登录用户禁用特定插件?

在 WooCommerce 中为特定产品类别自定义“添加到购物车”按钮

在Woocommerce中为特定产品类别使用自定义单一产品模板