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

WooCommerce 3.3后台订单列表添加单个自定义列的技术咨询

没问题,这完全可以实现!针对WooCommerce 3.3版本,我整理了一套完整的代码方案,帮你在后台订单列表添加指定的自定义列,并且刚好放在订单号(order_number)列之后,同时展示两个自定义字段的内容:

实现步骤与代码

你可以将以下代码添加到你的主题functions.php文件中,或者创建一个简单的自定义插件来放置代码(推荐后者,避免主题更新丢失修改):

1. 添加自定义列并调整位置到订单号之后

// 添加自定义列并调整位置到订单号列之后
add_filter( 'manage_edit-shop_order_columns', 'add_my_custom_order_column', 20 );
function add_my_custom_order_column( $columns ) {
    // 先暂存订单号列的配置,然后从原数组中移除
    $order_number_column = $columns['order_number'];
    unset( $columns['order_number'] );
    
    // 重新添加订单号列,紧接着插入我们的自定义列
    $columns['order_number'] = $order_number_column;
    $columns['my-column1'] = '自定义信息'; // 这里可以修改列的显示标题
    
    return $columns;
}

2. 填充自定义列的内容

// 为自定义列填充两个自定义字段的内容
add_action( 'manage_shop_order_posts_custom_column', 'populate_my_custom_order_column', 10, 2 );
function populate_my_custom_order_column( $column, $post_id ) {
    // 只处理我们的自定义列
    if ( 'my-column1' !== $column ) {
        return;
    }
    
    // 获取你指定的两个自定义字段值
    $my_var_one = get_post_meta( $post_id, '_the_meta_key1', true );
    $my_var_two = get_post_meta( $post_id, '_the_meta_key2', true );
    
    // 格式化输出内容,兼顾空值情况
    $output = '';
    if ( ! empty( $my_var_one ) ) {
        $output .= '字段1:' . esc_html( $my_var_one );
    }
    if ( ! empty( $my_var_one ) && ! empty( $my_var_two ) ) {
        $output .= '<br>'; // 用换行分隔两个字段
    }
    if ( ! empty( $my_var_two ) ) {
        $output .= '字段2:' . esc_html( $my_var_two );
    }
    
    // 如果两个字段都为空,显示默认提示
    echo $output ?: '无相关数据';
}

代码说明

  • 第一个钩子manage_edit-shop_order_columns设置了优先级20,确保我们能在默认列加载完成后调整顺序;
  • 通过「暂存-移除-重新添加」订单号列的方式,精准把自定义列放在它的后面;
  • 使用esc_html()处理输出内容,避免潜在的安全风险(比如XSS攻击);
  • 处理了字段为空的情况,显示友好的默认提示,提升后台使用体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:08:30