WooCommerce 中除特定运输方式外的最低订单金额

问题描述 投票:0回答:2

在 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; // Hier gibst du den Mindestbestellwert ein
    
    if ( WC()->cart->total < $minimum ) { 
        if( is_cart() ) { 
            wc_print_notice( sprintf( 'Der Mindestbestellwert beträgt %s pro Bestellung. Der aktuelle Bestellwert beträgt %s.' , // Text fuer Warenkorb 
                wc_price( $minimum ), 
                wc_price( WC()->cart->total )
            ), 'error' );
        } else {
            wc_add_notice( sprintf( 'Der Mindestbestellwert beträgt %s pro Bestellung. Der aktuelle Bestellwert beträgt %s.' , // Text fuer Kasse
                wc_price( $minimum ),
                wc_price( WC()->cart->total )
            ), 'error' );
        }
    }
}

现在如果客户选择“自取”(“本地取货运输方式”),我不想要任何最低订单金额。

如何在 WooCommerce 中设置除“本地取货”运输方式之外的最低订单金额?

php wordpress woocommerce cart checkout
2个回答
1
投票

基于 在结帐页面中获取“免运费”方法的最低订单金额答案代码以及在 WooCommerce 中设置最低订单金额答案代码,以下是设置最低订单金额的正确方法,除了对于 WooCommerce 中的具体运输方式:

add_action( 'woocommerce_check_cart_items', 'wc_minimum_required_order_amount' );
function wc_minimum_required_order_amount() {

    // HERE Your settings
    $minimum_amount     = 50; // The minimum cart total amount
    $shipping_method_id = 'local_pickup'; // The targeted shipping method Id (exception)

    // Get some variables
    $cart_total     = (float) WC()->cart->total; // Total cart amount
    $chosen_methods = (array) WC()->session->get( 'chosen_shipping_methods' ); // Chosen shipping method rate Ids (array)

    // Only when a shipping method has been chosen
    if ( ! empty($chosen_methods) ) {
        $chosen_method  = explode(':', reset($chosen_methods)); // Get the chosen shipping method Id (array)
        $chosen_method_id = reset($chosen_method); // Get the chosen shipping method Id
    }

    // If "Local pickup" shipping method is chosen, exit (no minimun is required)
    if ( isset($chosen_method_id) && $chosen_method_id === $shipping_method_id ) {
        return; // exit
    }

    // Add an error notice is cart total is less than the minimum required
    if ( $cart_total < $minimum_amount ) {
        wc_add_notice( sprintf(
            __("The minimum required order amount is %s (your current order amount is %s).", "woocommerce"), // Text message
            wc_price( $minimum_amount ),
            wc_price( $cart_total )
        ), 'error' );
    }
}

代码位于活动子主题(或活动主题)的functions.php 文件中。已测试并有效。

或者您也可以使用:

add_action( 'woocommerce_checkout_process', 'wc_minimum_required_order_amount' );
add_action( 'woocommerce_before_cart' , 'wc_minimum_required_order_amount' );
function wc_minimum_required_order_amount() {

    // HERE Your settings
    $minimum_amount     = 100; // The minimum cart total amount
    $shipping_method_id = 'local_pickup'; // The targeted shipping method Id (exception)

    // Get some variables
    $cart_total     = (float) WC()->cart->total; // Total cart amount
    $chosen_methods = (array) WC()->session->get( 'chosen_shipping_methods' ); // Chosen shipping method rate Ids (array)

    // Only when a shipping method has been chosen
    if ( ! empty($chosen_methods) ) {
        $chosen_method  = explode(':', reset($chosen_methods)); // Get the chosen shipping method Id (array)
        $chosen_method_id = reset($chosen_method); // Get the chosen shipping method Id
    }

    // If "Local pickup" shipping method is chosen, exit (no minimun is required)
    if ( isset($chosen_method_id) && $chosen_method_id === $shipping_method_id ) {
        return; // exit
    }

    // Add an error notice is cart total is less than the minimum required
    if ( $cart_total < $minimum_amount ) {
        $text_notice = sprintf(
            __("The minimum required order amount is %s (your current order amount is %s).", "woocommerce"), // Text message
            wc_price( $minimum_amount ),
            wc_price( $cart_total )
        );
        
        if ( is_cart() ) {
            wc_print_notice( $text_notice, 'error' );
        } else {
            wc_add_notice( $text_notice, 'error' );
        }
    }
}

代码位于活动子主题(或活动主题)的functions.php 文件中。已测试并有效。


0
投票

是否也可以隐藏统一费率运输选项,直到达到最低金额?

© www.soinside.com 2019 - 2024. All rights reserved.