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

如何通过Hook修改WooCommerce后台订单标题及添加自定义字段?

解决WooCommerce后台订单号下方添加自定义字段/修改订单标题的Hook方案

我来帮你搞定这个问题!你之前尝试的两个Hook没生效,大概率是Hook的用法或者位置理解有偏差,下面给你几个靠谱的服务器端Hook实现方案,比jQuery的前端方案更稳定规范:

一、在订单号下方添加自定义字段(正确Hook用法)

woocommerce_admin_order_data_after_order_number这个Hook确实是用来在订单号之后输出内容的,可能你之前的函数写法有问题,试试这个完整的代码:

add_action( 'woocommerce_admin_order_data_after_order_number', 'add_custom_content_after_order_number', 10, 1 );
function add_custom_content_after_order_number( $order ) {
    // 示例1:输出订单的自定义字段值
    $custom_meta = get_post_meta( $order->get_id(), 'your_custom_meta_key', true );
    if ( ! empty( $custom_meta ) ) {
        echo '<div class="order_data_column">
                <p><strong>' . __( '客户专属编号:', 'woocommerce' ) . '</strong> ' . esc_html( $custom_meta ) . '</p>
              </div>';
    }

    // 示例2:直接添加自定义标题或文本
    echo '<div class="order_data_column">
            <h4 style="margin: 10px 0;">' . __( '订单备注:', 'woocommerce' ) . '</h4>
            <p>' . esc_html( $order->get_customer_note() ) . '</p>
          </div>';
}

代码说明:

  • 把your_custom_meta_key换成你实际的自定义字段键名
  • 用$order对象可以直接调用WooCommerce的订单方法,比如$order->get_customer_note()获取客户备注、$order->get_billing_email()获取邮箱等
  • 用esc_html()确保输出内容安全,避免XSS风险
  • 包裹在order_data_column类里可以和后台的布局保持一致

二、修改订单标题(替换原订单号显示)

如果你的需求是修改订单号本身的显示(比如改成自定义格式),可以用woocommerce_admin_order_number过滤器:

add_filter( 'woocommerce_admin_order_number', 'customize_admin_order_title', 10, 2 );
function customize_admin_order_title( $original_order_number, $order ) {
    // 自定义订单号格式,比如加上前缀+自定义字段
    $custom_order_title = 'VIP-ORD-' . $order->get_id();
    
    // 如果你想保留原订单号并追加内容
    // $custom_order_title = $original_order_number . ' | 客户ID:' . $order->get_customer_id();
    
    return $custom_order_title;
}

三、之前Hook没生效的常见原因

  1. 代码放置位置错误:要把代码放到当前主题的functions.php文件里,或者自己创建的自定义插件中,不要直接放到WooCommerce核心文件(会被更新覆盖)
  2. 函数名冲突:确保你的函数名是唯一的,不要和其他插件/主题的函数重名
  3. 优先级问题:如果其他插件也用了同一个Hook,试试把优先级调高(比如改成20),确保你的代码最后执行

为什么Hook方案比jQuery更好?

  • 服务器端渲染,不会有页面加载后才显示内容的延迟问题
  • 更符合WooCommerce的开发规范,后台UI更新时不容易失效
  • 不需要依赖前端JS,兼容性更好(比如禁用JS的场景也能正常显示)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 10:52:31