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

如何导出含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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 13:35:58