如何通过自定义端点从 WordPress 获取当前登录用户?

How to get current logged in user from WordPress via custom endpoints?

我的 WordPress 插件中有一个端点,并且正在使用它。我想获取当前登录 WordPress 的用户。我的端点如下所示:

add_action( 'rest_api_init', function () {
register_rest_route( 't2mchat/v2', '/get_curr_user', array(
    'methods' => 'GET',
    'callback' => 'get_curr_user'
    ));
});

回调函数:

function get_curr_user(WP_REST_Request $request){    
  $user = wp_get_current_user();
  return $user;
}

这返回用户 ID 为 0

我在WordPress官网上看了一篇关于Authentication的文章,了解到我需要通过nonces,但由于我是新手,所以我无法理解它所说的一切。

另外,我在我的 React 应用程序中这样调用这个端点:

loadData() {
return fetch(`/wordpress/wp-json/t2mchat/v2/get_curr_user`)
  .then(response => response.json())
  .then(responseJson => {
    this.setState({ curr_user: responseJson });
    //console.log(this.state.curr_user, "curr user role");
  })
  .catch(error => {
    console.error(error);
  });
}

我不确定如何在请求中传递 nonces,以便我可以获得当前登录的用户。

任何 experience/idea 的人都可以建议我需要对我的代码进行哪些更改吗?

一个例子将不胜感激。

谢谢。

在您的 PHP 文件中包含 wp-load.php

include_once("wp-load.php");

然后您可以访问所有原生 Wordpress 函数,只需调用它们即可。 所以你必须能够通过 wp_get_current_user();

检索当前登录的用户

当 wordpress 初始化并从我的端点检索时,我使用会话存储来存储用户数据。它对我有用。