在Jason-api中不显示wordpress wp_get_current_user数据

时间:2018-08-31 13:35:45

标签: php wordpress wordpress-json-api

我想在另一个网站上显示WordPress登录的用户ID和电子邮件,因此,我正在使用wordpress json-api插件来创建api,但无法正常工作。
当我点击直接链接时,它显示的数据为:

"{\"id\":1,\"email\":\"admin@admin.com\"}" 

但是当我使用json_decode并打印数据时,它显示:

string(22) "{"id":0,"email":false}"

api代码

public function get_loggedin_user_details() {
    global $user;
    global $wpdb, $json_api;
    $current_user = wp_get_current_user();
    $myObj->id = $current_user->ID;
    $myObj->email = $current_user->user_email;
    $logedin_userid = json_encode($myObj);
    return $logedin_userid;
  }

3 个答案:

答案 0 :(得分:0)

您没有对请求进行身份验证,因此未记录该请求,导致ID 0,并且没有电子邮件。

WP rest api提供了cookie身份验证方法,但是也有插件,您可以在此处阅读更多有关操作方法的信息:

https://developer.wordpress.org/rest-api/using-the-rest-api/authentication/

答案 1 :(得分:0)

以下是在WP上获取登录用户ID的过程:

  1. 安装JWT Authentication for WP REST API插件以进行Rest-API身份验证(阅读插件说明enter image description here
  2. 将您从插件收到的登录令牌传递给 您创建为标题的路线:授权 enter image description here

  3. 像这样创建自定义的Rest-API路由:

    add_action( 'rest_api_init', function () {
    register_rest_route( 'your_custom_route/v2', '/(?P<slug>[a-zA-Z0-9-]+)', array(
        'methods' => 'POST',
        'callback' => 'rest_api_custom_func',
        ) );
    } );
    
    function rest_api_custom_func(){ 
        global $user;
        global $wpdb;
        $current_user = wp_get_current_user();
        $myObj->id = $current_user->ID;
        $myObj->email = $current_user->user_email;
        $logedin_userid = json_encode($myObj);
        return $logedin_userid;     }
    
  4. 在rest-api路由上编写自己的函数作为回调函数 : rest_api_custom_func

  5. 您可以使用自定义回调函数执行任何操作

注意:不需要任何其他插件,请使用内置的Wordpress Rest API

答案 2 :(得分:0)

我要指出一些可能被忽略的东西。

您的初始值已转义...“ {\” id \“:1,\” email \“:\” admin@admin.com \“}”“,并在外面加上了引号。这不是正确的json字符串。

应为:{“ id”:1,“电子邮件”:“ admin@admin.com”}