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

WordPress中获取非管理员已登录用户信息的技术问题

WordPress自定义REST端点获取登录用户数据问题解决

核心问题原因

你手动引入wp-load.php的方式破坏了WordPress REST API的内置认证流程,导致get_current_user_id()和wp_get_current_user()无法识别登录用户,返回0或无效对象。手动解析LOGGED_IN_COOKIE不仅不安全(跳过了WP的cookie签名验证),还只能拿到用户名,无法获取完整用户数据。

另外,默认wp-json/wp/v2/users端点对非管理员用户的权限限制较严,未发布文章的用户可能无法通过该端点获取自身信息,所以需要自定义端点并正确处理权限。

解决方案步骤

  1. 通过官方钩子注册端点:使用rest_api_init钩子注册自定义端点,确保WP环境和认证机制完整初始化。
  2. 利用WP内置认证获取用户:无需手动解析cookie,依赖WP的REST认证(支持cookie、JWT等方式)自动识别登录用户。
  3. 安全返回用户数据:只返回当前登录用户自身的合法字段,避免权限泄露。

修正后的代码示例

class Custom_User_Endpoint {
    public function __construct() {
        add_action( 'rest_api_init', array( $this, 'register_endpoints' ) );
    }

    public function register_endpoints() {
        register_rest_route(
            'custom/v1',
            '/current-user',
            array(
                'methods' => 'GET',
                'callback' => array( $this, 'get_current_user_data' ),
                'permission_callback' => array( $this, 'check_permission' )
            )
        );
    }

    // 权限验证:确保用户已登录
    public function check_permission() {
        return is_user_logged_in();
    }

    public function get_current_user_data( $request ) {
        // 直接使用WP内置方法获取当前用户,无需手动引入wp-load.php
        $current_user = wp_get_current_user();
        
        // 提取需要的用户字段,可根据需求添加
        $user_data = array(
            'id' => $current_user->ID,
            'username' => $current_user->user_login,
            'email' => $current_user->user_email,
            'display_name' => $current_user->display_name,
            'first_name' => $current_user->first_name,
            'last_name' => $current_user->last_name
        );

        return rest_ensure_response( $user_data );
    }
}

// 初始化端点
new Custom_User_Endpoint();

关键说明

  • 权限控制:permission_callback确保只有登录用户能访问该端点,符合安全要求。
  • 数据完整性:无论用户是否发布过文章,只要登录就能获取自身的基础信息,无需依赖用户的文章状态。
  • 安全性:避免了手动解析cookie的风险,所有用户数据通过WP官方方法获取,保证数据合法有效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 08:35:04