根据运输区域的不同最小起订量

问题描述 投票:1回答:1

我正在尝试根据woocommerce中的运输区域实施不同的最低订购要求,我似乎无法使它正常工作。尽管某人的地址位于3区,但最低$ 49.99似乎仍然有效。

// MINIMUM CART AMOUNT FOR CHECKOUT

add_action( 'woocommerce_check_cart_items', 'required_min_cart_subtotal_amount' );
function required_min_cart_subtotal_amount() {
    $zone = WC_Shipping_Zones::get_zone_by( 'zone_id', 3 );
    // Only run it in  Cart or Checkout pages
    if( is_cart() || ( is_checkout() && ! is_wc_endpoint_url() ) ) {
        // Get cart shipping packages
        $shipping_packages =  WC()->cart->get_shipping_packages();

        // Get the WC_Shipping_Zones instance object for the first package
        $shipping_zone = wc_get_shipping_zone( reset( $shipping_packages ) );
        $zone_id   = $shipping_zone->get_id(); // Get the zone ID
        $zone_name = $shipping_zone->get_zone_name(); // Get the zone name

        // Total (before taxes and shipping charges)
        $total = WC()->cart->subtotal;

         // HERE Set minimum cart total amount (for Zone 3 and for other zones)
        $min_total = $zone == 3 ? 99.99 : 49.99;


        // Add an error notice is cart total is less than the minimum required
        if( $total <= $min_total  ) {
            // Display an error message
            wc_add_notice( '<strong>' . sprintf(
                __("A minimum total purchase amount of %s is required to checkout."),
                wc_price($min_total)
            ) . '<strong>', 'error' );
        }
    }
}
php wordpress woocommerce shipping-method
1个回答
0
投票

$ zone = WC_Shipping_Zone对象

$zone = WC_Shipping_Zones::get_zone_by( 'zone_id', 3 );

...

// HERE Set minimum cart total amount (for Zone 3 and for other zones)
$min_total = $zone == 3 ? 99.99 : 49.99;

错误:类WC_Shipping_Zone的对象无法转换为int

我认为这是错误,您将对象作为一个整数进行比较,而这应该是$ zone_id

这能解决问题吗?

$min_total = $zone_id == 3 ? 99.99 : 49.99;
© www.soinside.com 2019 - 2024. All rights reserved.