如何导出含WordPress用户显示名称的订单?求正确PHP代码
解决方案:在WordPress订单XLS报表中加入用户公开显示名称
一、修正你现有更新用户显示名的代码
你当前的代码用于更新用户显示名,报错通常是权限不足或未处理错误返回值,修正后代码如下:
$user_id = 672; $display_name = 'Les Yeux'; // 校验编辑权限 if (current_user_can('edit_user', $user_id)) { $result = wp_update_user([ 'ID' => $user_id, 'display_name' => $display_name ]); if (is_wp_error($result)) { echo '更新失败:' . $result->get_error_message(); } else { echo '显示名更新成功'; } } else { echo '无权限编辑该用户'; }
二、核心需求实现:导出订单时包含公开显示名称
假设你使用WooCommerce(WordPress主流电商订单插件),通过钩子为导出报表添加自定义列:
1. 添加自定义列到报表表头
add_filter('woocommerce_export_order_columns', 'add_display_name_export_column'); function add_display_name_export_column($columns) { $new_columns = []; foreach ($columns as $key => $label) { $new_columns[$key] = $label; // 在邮箱列后插入新列,可自行调整位置 if ($key === 'billing_email') { $new_columns['user_display_name'] = '用户公开显示名称'; } } return $new_columns; }
2. 填充自定义列的用户显示名数据
add_filter('woocommerce_export_order_row', 'fill_display_name_export_column', 10, 2); function fill_display_name_export_column($row, $order) { $user_id = $order->get_user_id(); if ($user_id > 0) { $user = get_user_by('id', $user_id); $display_name = $user->display_name; } else { // 访客订单显示标识 $display_name = '访客'; } $row['user_display_name'] = $display_name; return $row; }
说明
- 将代码添加到主题
functions.php或通过Code Snippets插件导入 - 若使用其他订单插件,只需替换对应插件的导出钩子,核心逻辑不变:获取订单关联用户ID → 调用
get_user_by获取用户对象 → 提取display_name字段
排查要点
- 若列无内容,检查订单是否关联注册用户(访客订单会显示“访客”)
- 若无法获取
display_name,可直接调用get_user_meta($user_id, 'display_name', true)读取数据库值
内容的提问来源于stack exchange,提问作者imacss com
相关产品推荐
相关产品推荐

