wordpress wp_get_current_user данные не отображаются в jason-api - PullRequest
0 голосов
/ 31 августа 2018

Я хочу отобразить 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 голосов
/ 31 августа 2018

Вот процесс получения идентификатора зарегистрированного пользователя на WP:

  1. установка Аутентификация JWT для 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

0 голосов
/ 31 августа 2018

Я собираюсь указать на то, что, возможно, просто упустили из виду.

Ваше начальное значение экранировано ... "{\" id \ ": 1, \" email \ ": \" admin@admin.com \ "}" и содержит кавычки снаружи. Это не правильная строка JSON.

Должно быть: {"id": 1, "email": "admin@admin.com"}

0 голосов
/ 31 августа 2018

Вы не аутентифицируете свой запрос, поэтому запрос не зарегистрирован, в результате ID 0 и отсутствие электронного адреса.

WP rest api предоставляет метод аутентификации cookie, но есть также плагины, о которых вы можете прочитать подробнее:

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

...