3

我想在另一个网站上显示一个 WordPress 登录的用户 ID 和电子邮件,所以我正在使用 wordpressjson-api插件来创建一个 api,但它不起作用。
当我点击直接链接时,它将数据显示为:

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

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

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

接口代码

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;
  }
4

3 回答 3

0

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

  1. 为 WP REST API插件安装JWT 身份验证以进行 REST -API 身份验证(阅读插件说明在此处输入图像描述
  2. 将您从插件收到的登录令牌传递给您作为 Header: Authorization 创建的路由 在此处输入图像描述

  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

于 2018-08-31T14:05:20.453 回答
0

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

您的初始值被转义... "{\"id\":1,\"email\":\"admin@admin.com\"}" 并且在外面有引号。这不是一个正确的 json 字符串。

应该是:{"id":1,"email":"admin@admin.com"}

于 2018-08-31T14:44:53.157 回答
0

您没有对您的请求进行身份验证,因此不会记录该请求,从而导致 ID 为 0 且没有电子邮件。

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

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

于 2018-08-31T13:46:03.430 回答