Autentificare prin API WordPress și obținere detalii utilizator
1. Instalează și activează plugin-ul JWT Authentication for WP REST API, de asemenea instalează plugin-ul WP REST API
2. Acum poți accesa orice API implicit WordPress din aplicația mobilă sau din orice altă sursă sau prin Postman. De exemplu, accesează acest URL din aplicația ta sau prin Postman: https://example.com/wp-json/wp/v2/posts
3. Prin aplicație sau prin Postman, când te vei autentifica cu date valide (folosind REST API), vei primi înapoi un token. Pentru a te autentifica și a obține tokenul, rulează următorul URL prin Postman sau prin aplicație:
https://example.com/wp-json/jwt-auth/v1/token
4. În acest fel vei obține un token așa cum este afișat în imagine
Acum folosește acest token pentru a obține detaliile utilizatorului autentificat, de exemplu
5. creează o funcție în fișierul functions.php
function checkloggedinuser()
{
$currentuserid_fromjwt = get_current_user_id();
print_r($currentuserid_fromjwt);
exit;
}
add_action('rest_api_init', function ()
{
register_rest_route( 'testone', 'loggedinuser',array(
'methods' => 'POST',
'callback' => 'checkloggedinuser'
));
});
6. Acum rulează din nou acest nou URL în Postman sau în aplicație pentru a obține detaliile utilizatorului autentificat.
https://example.com/wp-json/testone/loggedinuser
(înlocuiește example.com cu URL-ul tău)

Salut, am o soluție mai rapidă și mai bună pentru a obține ID-ul și altele, cum ar fi avatarul utilizatorului.
Adaugă acest cod în fișierul tău functions.php:
/*
* Adaugă date suplimentare în plugin-ul JWT Auth
*/
function jwt_auth_function($data, $user) {
$data['user_role'] = $user->roles;
$data['user_id'] = $user->ID;
$data['avatar']= get_avatar_url($user->ID);
return $data;
}
add_filter( 'jwt_auth_token_before_dispatch', 'jwt_auth_function', 10, 2 );
Referință: Cum să obții ID-ul utilizatorului prin API
Sper că acest lucru te-a ajutat

Rezolvat:
add_action( 'rest_api_init', 'register_api_hooks' );
function register_api_hooks() {
register_rest_route(
'custom-plugin', '/login/',
array(
'methods' => 'POST',
'callback' => 'login',
)
);
}
function login($request){
$creds = array();
$creds['user_login'] = $request["username"]; // Numele de utilizator
$creds['user_password'] = $request["password"]; // Parola
$creds['remember'] = true; // Ține-mă minte activat
$user = wp_signon( $creds, true ); // Autentificare WordPress
// Verifică dacă există erori la autentificare
if ( is_wp_error($user) )
echo $user->get_error_message(); // Afișează mesajul de eroare
$id = $user->ID; // ID-ul utilizatorului
$meta = get_user_meta($id); // Obține metadatele utilizatorului
return $meta; // Returnează metadatele
}

Aceasta este foarte nesigură. Transmiți numele de utilizator și parola în mod deschis în URL.

Nu contează. Te rog citește linkul către documentația pe care am postat-o ca un comentariu. Există metode corecte și mai sigure de a face acest lucru.

@JacobPeattie Ar fi ok să folosim POST în loc de GET? Linkul către documentația WP pe care l-ai dat a fost de fapt primul loc unde am căutat, dar nu pare să acopere nimic despre cum să faci autentificarea.

Această soluție ar putea funcționa pentru cazul nostru de utilizare, și anume să permitem utilizatorilor aplicației noastre de server să se autentifice transparent cu credențialele lor Wordpress. Am trimite în esență detaliile server-to-server către WP pentru autentificare la începutul sesiunii, apoi am stoca detaliile utilizatorului în baza noastră de date. Deci facem autentificarea de bază doar o dată pe sesiune printr-o conexiune de încredere, astfel evitând problemele de securitate, dispozitivul client trimite credențialele o singură dată. Ca măsură suplimentară de securitate, vom cere o cheie secretă partajată fie în header, fie ca parte a cererii
