Woocommerce 后台订单汇总显示含税总价及自定义代码问题咨询
修复后完整可直接使用的代码
function action_woocommerce_admin_order_item_values( $null, $item, $absint ) { // 仅处理商品和运费行,提前判断属性存在避免退款场景报错 if ( !is_object( $item ) || !method_exists( $item, 'get_type' ) || !in_array( $item->get_type(), [ 'line_item', 'shipping' ] ) ) { echo '<td class="item_fcost"> </td>'; return; } $total = (float) $item->get_total(); $total_tax = (float) $item->get_total_tax(); $val = $total + $total_tax; // 调用本地化价格格式化函数,自动适配站点小数分隔符规则 $val_formatted = wc_format_localized_price( $val ); ?> <td class="item_fcost" data-sort-value="<?php echo esc_attr( $val ); ?>"> <div class="view" style="font-weight: bold; text-align: right; padding-right: 10px;"> <?php echo $val_formatted . ' DKK'; ?> </div> </td> <?php }; // 优先级调为20,在系统默认列之后加载,排在最右侧 add_action( 'woocommerce_admin_order_item_values', 'action_woocommerce_admin_order_item_values', 20, 3 ); function action_woocommerce_admin_order_item_headers( $order ) { echo '<th class="item_fcost sortable" data-sort="float" style="text-align: right;">Pris inkl. moms</th>'; }; // 优先级和内容行保持一致,对应列顺序 add_action( 'woocommerce_admin_order_item_headers', 'action_woocommerce_admin_order_item_headers', 20, 3 );
对应需求的修改说明
- 小数分隔符适配:替换原有的
wc_format_decimal为WooCommerce内置的本地化价格格式化函数,会自动读取你站点后台设置的小数分隔符规则,和全站其他位置的价格显示格式完全一致。 - 免费/零元场景空值修复:移除了原代码中仅在值大于0时输出的判断,只要是商品或运费行,哪怕金额为0也会正常显示格式化后的零值,不会出现空列。
- 列顺序调整:将两个钩子的执行优先级从默认的10调整为20,会在系统默认的税额列加载完成后再新增当前列,自动排在表格最右侧,符合「数量、总价、税额、含税总价」的排序要求。
- 退款订单报错修复:新增了对象类型校验、属性存在性判断,使用WooCommerce标准的
get_方法读取订单商品属性,避免退款场景下访问不存在的数组键导致的致命错误,兼容正常订单和退款订单。
内容的提问来源于stack exchange,提问作者eqr21
相关产品推荐
相关产品推荐

