如何修改WooCommerce后台订单列代码,显示用户登录名而非用户ID?
修改WooCommerce后台订单列表列,显示用户登录名
你需要对原有代码做两处核心调整,同时兼容匿名订单场景:
- 将列标题替换为中文「客户」,并优化列标识的语义化
- 通过订单关联的用户ID获取用户对象,提取并显示用户登录名
修改后的完整代码如下:
add_filter( 'manage_edit-shop_order_columns', 'add_new_order_admin_list_column' ); function add_new_order_admin_list_column( $columns ) { $columns['customer_login'] = '客户'; return $columns; } add_action( 'manage_shop_order_posts_custom_column', 'add_new_order_admin_list_column_content' ); function add_new_order_admin_list_column_content( $column ) { global $post; if ( 'customer_login' === $column ) { $order = wc_get_order( $post->ID ); $user_id = $order->get_user_id(); // 区分已登录用户和匿名订单 if ( $user_id > 0 ) { $user = get_user_by( 'id', $user_id ); echo esc_html( $user->user_login ); } else { echo '匿名客户'; } } }
关键修改细节:
- 列信息优化:把原有的
user_id列标识改为customer_login,更贴合实际显示内容;同时将列标题从Kunde改为「客户」,符合中文后台需求 - 登录名获取逻辑:
- 先获取订单的用户ID,判断是否为已登录用户(ID大于0)
- 已登录用户通过
get_user_by()方法获取用户对象,输出其user_login字段,并用esc_html()避免XSS风险 - 匿名订单(用户ID为0)时,显示「匿名客户」的友好提示
内容的提问来源于stack exchange,提问作者martnek
相关产品推荐
相关产品推荐

