Search code examples
wordpressreactjswordpress-rest-apinonce

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


I have an endpoint in my WordPress plugin, and using it. I want to get the user who is currently logged in the WordPress. My endpoint looks like this:

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

The callback function:

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

This gives me back user ID as 0.

I read the article on WordPress official website about Authentication , and learned that I need to pass nonces, but since I am a new to this, I could not understand everything it says.

Also, I am calling this endpoint in my React app like this:

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

I am not sure how do I pass nonces in the request, so I can get the currently logged in user.

Can anyone with experience/idea suggest what changes I need to make in my code?

An example would be highly appreciated.

Thank you.


Solution

  • I used session storage to store user data when the wordpress initializes and retrieved from my endpoint. It worked for me.