如果自定义字段总值达到特定值,则显示自定义消息

Display a custom message if a custom fields total value reaches a specific value

我为每个简单产品都有一个自定义字段,即商品的体积 (立方米)

我想向用户显示一条消息,表明他们的订单体积尚未达到 68 立方米 (40 英尺集装箱的体积) 。我重复使用了另一个函数的一些代码,该函数将自定义字段 _item_volume 中的音量值相加。

当值达到 68 m3 时如何显示消息?

// Loop through cart items and calculate total volume
foreach( WC()->cart->get_cart() as $cart_item ){
    $product_volume = (float) get_post_meta( $cart_item['product_id'], '_item_volume', true );
    $total_volume  += $product_volume * $cart_item['quantity'];
}

尝试以下方法,如果购物车的总体积未达到 68 立方米,将显示自定义通知:

add_action('woocommerce_before_calculate_totals', 'display_custom_notice', 50, 1);
function display_custom_notice( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        return;

    $total_volume = 0;

    // Loop through cart items and calculate total volume
    foreach( WC()->cart->get_cart() as $cart_item ){
        $product_volume = (float) get_post_meta( $cart_item['product_id'], '_item_volume', true );
        $total_volume  += $product_volume * $cart_item['quantity'];
    }
    if( $total_volume < 68 && $total_volume != 0 ){
        // Display a custom notice
        wc_add_notice( __("Note: Your order total volume has not reached 68 m3", "woocommerce"), 'notice' );
    }
}

代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。