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

如何仅在WooCommerce后台订单列表修改订单显示总额

解决WooCommerce后台订单列表自定义总额显示需求

针对订单原总额为R$65时,后台显示实际到账R$64,36、前台用户端保持原金额R$65的需求,可通过以下代码实现:

// 自定义后台订单列表的总额显示
add_action( 'manage_shop_order_posts_custom_column', 'custom_admin_order_total_display', 20, 2 );
function custom_admin_order_total_display( $column, $post_id ) {
    if ( $column !== 'order_total' ) return;

    $order = wc_get_order( $post_id );
    if ( ! $order ) return;

    $original_total = (float) $order->get_total();
    // 判断原订单总额为65雷亚尔时替换显示金额
    if ( $original_total === 65.00 ) {
        echo wc_price( 64.36, [ 'currency' => 'BRL' ] );
    } else {
        echo $order->get_formatted_order_total();
    }
}

// 强制前台用户订单列表保留原始总额
add_filter( 'woocommerce_get_order_item_totals', 'preserve_frontend_order_total', 10, 3 );
function preserve_frontend_order_total( $total_rows, $order, $tax_display ) {
    if ( is_admin() ) return $total_rows;

    if ( isset( $total_rows['order_total'] ) ) {
        $total_rows['order_total']['value'] = $order->get_formatted_order_total();
    }
    return $total_rows;
}

代码说明

  • 第一个钩子manage_shop_order_posts_custom_column仅作用于后台订单列表,精准定位order_total列,当原订单总额为65.00时,输出预先设定的实际到账金额,其他金额保持默认显示。
  • 第二个钩子woocommerce_get_order_item_totals确保前台用户端的订单总额始终显示原始值,避免后台修改逻辑影响用户视角。
  • 金额格式化使用WooCommerce内置的wc_price函数,自动匹配后台设置的巴西雷亚尔货币格式(逗号作为小数分隔符)。

注意事项

  • 代码可添加至当前主题的functions.php文件末尾,或使用Code Snippets等自定义代码插件(推荐后者,避免主题更新丢失代码)。
  • 若需扩展其他金额的替换规则,只需修改$original_total === 65.00的判断条件,例如添加|| $original_total === X.XX即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:22:28