You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在WooCommerce订单感谢页显示计算出的总容积

解决WooCommerce订单感谢页显示总容积的钩子推荐

嘿,刚好我对WooCommerce的感谢页钩子很熟!你要在订单感谢页的产品列表下方表格显示总容积,最适合的钩子是woocommerce_order_details_after_order_table——它刚好触发在订单详情表格(也就是产品列表那部分)的后面,完美匹配你要的位置。

具体实现代码

你可以基于之前的累加逻辑,写一个专门针对订单数据的函数,因为感谢页调用的是已完成订单的信息,而非购物车数据:

// 在订单感谢页的产品列表表格后显示总容积
add_action( 'woocommerce_order_details_after_order_table', 'display_order_volume_total', 20 );
function display_order_volume_total( $order ) {
    $total_volume = 0;

    // 遍历订单内的所有商品
    foreach( $order->get_items() as $item ) {
        $product = $item->get_product();
        // 替换为你实际的产品容积自定义字段键名(和之前购物车代码保持一致)
        $product_volume = $product->get_meta( 'product_volume', true );
        
        // 验证容积值有效后,累加(容积 × 购买数量)
        if( ! empty( $product_volume ) && is_numeric( $product_volume ) ) {
            $total_volume += floatval( $product_volume ) * $item->get_quantity();
        }
    }

    // 仅当总容积大于0时输出,避免空内容
    if( $total_volume > 0 ) {
        echo '<tr class="order-total-volume">
                <th>' . esc_html__( '整单总容积', 'woocommerce' ) . '</th>
                <td>' . wc_format_decimal( $total_volume, 2 ) . ' ' . esc_html__( 'm³', 'woocommerce' ) . '</td>
              </tr>';
    }
}

注意事项

  • 请把代码中的'product_volume'替换成你实际存储产品容积的自定义字段键名,确保和之前购物车代码里使用的字段一致。
  • 输出的样式可以通过CSS类.order-total-volume来调整,让它和订单表格的其他行样式统一,比如字体、对齐方式等。
  • 这个钩子会自动传递当前订单的$order对象,所以不需要额外获取订单ID,直接用它遍历商品即可。

内容的提问来源于stack exchange,提问作者James Donald

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:16:27