I\'m making some API endpoints that require me to confirm who the user is, and what they can do, before I let them use the endpoint.
However, I can\'t seem to get the current user.
My endpoint:
function register_api_hooks() {
register_rest_route(
\'bacon\', \'/user/\',
array(
\'methods\' => \'POST\',
\'callback\' => \'makinbacon\',
)
);
}
function makinbacon(WP_REST_Request $request){
return json_encode(wp_get_current_user());
}
add_action( \'rest_api_init\', \'register_api_hooks\' );
My fetch in the client:
fetch(\'/wp-json/bacon/user\', {
method: \'POST\',
headers: {
\'Content-Type\': \'application/json\',
},
credentials: \'same-origin\',
})
.then((response) => {
return response.json();
})
.then(function(json) {
console.log(json);
});
The fetch code is included in a normal wordpress page on the same domain and installation of wordpress as the API endpoint. Also, I am logged in as an admin user.
The result:
{"data":{},"ID":0,"caps":[],"cap_key":null,"roles":[],"allcaps":[],"filter":null}
So it seems that the endpoint in itself is working. I\'m not getting any errors, and it does return what seems to be a user. Just that the user is empty.
What else I have tried:
As some answers in similar questions suggested, I have tried including the global $current_user
. This gave the same result.
function makinbacon(WP_REST_Request $request){
global $current_user;
return json_encode(wp_get_current_user());
}
I have also tried setting credentials
to include
in the fetch call, as well as trying to change both the fetch call and the endpoint to a GET request.
Everything gives the same empty user.
I also tried to do other things in the endpoint, like creating a post, updating a post, etc. That worked fine.
So far the only thing I haven\'t been able to do in the endpoint is to fetch information about the current user.
Any ideas?