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

如何通过API导出全部WordPress用户数据?

解决方案

方法1:扩展默认WP REST API用户端点

默认WP REST API的/wp-json/wp/v2/users端点仅返回具备发布内容权限的用户,且不包含Ultimate Member(以下简称UM)的自定义字段。你可以通过代码修改这两个限制:

步骤1:让端点返回所有用户

将以下代码添加到主题的functions.php文件或自定义插件中:

add_filter('rest_user_query', function($query_args, $request) {
    // 移除默认角色限制,返回全量用户
    unset($query_args['role']);
    // 可选:排除特定用户(比如管理员)
    // $query_args['exclude'] = array(1); // 替换1为目标用户ID
    return $query_args;
}, 10, 2);

步骤2:附加UM自定义字段到响应结果

继续添加代码,把UM的用户元数据整合到API返回内容里:

add_filter('rest_prepare_user', function($response, $user, $request) {
    // 获取当前用户的所有UM元数据
    $um_meta = get_user_meta($user->ID);
    // 过滤出UM专属字段(以`um_`为前缀)
    $um_fields = array_filter($um_meta, function($key) {
        return str_starts_with($key, 'um_');
    }, ARRAY_FILTER_USE_KEY);
    // 将UM字段加入响应数据
    $response->data['um_fields'] = $um_fields;
    return $response;
}, 10, 3);

修改后,使用拥有list_users权限的账号(如管理员)发起请求,就能获取所有用户及对应的UM字段。

方法2:创建自定义REST API端点

如果需要更灵活的数据结构控制,可以自定义一个专属端点:

添加以下代码到主题functions.php或自定义插件:

add_action('rest_api_init', function() {
    register_rest_route('custom/v1', '/export-users', array(
        'methods' => 'GET',
        'callback' => 'custom_export_users_endpoint',
        'permission_callback' => function() {
            // 限制仅管理员可访问,可按需调整权限
            return current_user_can('manage_options');
        }
    ));
});

function custom_export_users_endpoint($request) {
    // 查询全量用户,可添加过滤条件(如角色、注册时间)
    $users = get_users(array(
        'number' => -1, // 返回所有用户
        // 可选:指定要导出的角色
        // 'role__in' => array('subscriber', 'um_member'),
    ));
    
    $export_data = array();
    foreach($users as $user) {
        // 基础用户数据
        $user_data = array(
            'ID' => $user->ID,
            'user_login' => $user->user_login,
            'user_email' => $user->user_email,
            'display_name' => $user->display_name,
            'user_registered' => $user->user_registered,
            'roles' => $user->roles
        );
        
        // 加入UM自定义字段
        $um_meta = get_user_meta($user->ID);
        $user_data['um_fields'] = array_filter($um_meta, function($key) {
            return str_starts_with($key, 'um_');
        }, ARRAY_FILTER_USE_KEY);
        
        $export_data[] = $user_data;
    }
    
    // 返回JSON格式数据,如需CSV可修改响应头输出对应格式
    return rest_ensure_response($export_data);
}

添加完成后,访问/wp-json/custom/v1/export-users即可获取包含UM字段的全量用户数据。

注意事项

  • API请求需认证,推荐使用WordPress 5.6+支持的应用密码或JWT认证方式,避免直接暴露账号密码。
  • 若用户量较大(如上万级),建议在自定义端点中添加page和per_page参数实现分页,防止单次请求超时。
  • 代码修改前请备份站点,避免出现意外问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 02:42:21