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

启用HPOS的WooCommerce后台订单页添加创建者自定义列求助

解决方案

要在启用HPOS的WooCommerce后台订单列表添加订单创建者列,需要使用HPOS专属钩子并修正创建者ID的获取逻辑,以下是完整可运行的代码:

// 注册自定义列到HPOS订单列表
add_filter( 'woocommerce_orders_list_columns', 'add_order_creator_column' );
function add_order_creator_column( $columns ) {
    // 在订单状态列后插入自定义列
    $insert_after = 'order_status';
    $new_columns = array();
    
    foreach ( $columns as $key => $label ) {
        $new_columns[ $key ] = $label;
        
        if ( $key === $insert_after ) {
            $new_columns['order_creator'] = '订单创建者';
        }
    }
    
    return $new_columns;
}

// 显示自定义列的内容
add_action( 'woocommerce_orders_list_column_order_creator', 'display_order_creator_column_content' );
function display_order_creator_column_content( $order ) {
    // 获取订单创建者ID(HPOS环境下使用专属方法)
    $creator_id = $order->get_created_by();
    
    if ( $creator_id ) {
        $creator = get_userdata( $creator_id );
        echo $creator ? $creator->display_name : '未知创建者';
    } else {
        // 处理前台游客下单的情况
        echo '前台游客';
    }
}

关键修正说明:

  1. 钩子适配HPOS:HPOS启用后,后台订单列表的列操作钩子已更新为woocommerce_orders_list_columns(添加列)和woocommerce_orders_list_column_{$column_key}(渲染内容),替代旧版的WordPress帖子类钩子。
  2. 创建者ID逻辑修正:原代码使用的get_customer_id()获取的是下单客户ID,而get_created_by()才是HPOS环境下获取订单创建者(后台管理员/有权限创建订单的用户)的正确方法。
  3. 边界场景处理:补充了创建者ID为空(如前台游客下单)的提示文本,避免页面显示异常。

使用说明:

  • 将代码添加到当前主题的functions.php文件,或通过自定义代码插件(如Code Snippets)导入。
  • 确认WooCommerce的HPOS功能已启用(路径:WooCommerce > 设置 > 高级 > 订单存储)。

内容的提问来源于stack exchange,提问作者Amir mohammad Mohammadi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 04:33:12