在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
相关产品推荐
相关产品推荐

