Care este metoda corectă de a obține ID-ul utilizatorului autentificat într-un plugin?
Am nevoie să obțin ID-ul utilizatorului autentificat în interiorul plugin-ului meu.
Este aceasta metoda corectă?
$root = dirname(dirname(dirname(dirname(__FILE__))));
if (file_exists($root.'/wp-load.php')) {
require_once($root.'/wp-load.php');
}
$user_id = get_current_user_id();
Otto afirmă că nu ar trebui să încărcăm fișierul wp-load.php deoarece nu știm unde se află acest fișier și dublează încărcarea serverului.
Așadar, sunt foarte confuz.
Și încă o întrebare..
Verifică această imagine de la Rarst
Conform acelei imagini, wp-load.php este încărcat înaintea tuturor plugin-urilor. De ce atunci toți autorii de plugin-uri includ din nou acel fișier?

Folosește is_user_logged_in()
și wp_get_current_user()
(documentația pentru dezvoltatori).
if ( is_user_logged_in() ) {
// Utilizatorul curent este autentificat,
// așa că vom obține informațiile despre acesta
$current_user = wp_get_current_user();
// ID-ul utilizatorului
$user_id = $current_user->ID;
}

Mulțumesc. Deci acest plugin este codat greșit, corect? (linia 12 - 17)

Aceasta este de fapt o întrebare separată. Fără a analiza mai în detaliu acel Plugin, nu pot comenta cu adevărat de ce încarcă wp-load.php
. Știu, totuși, că nu este necesar pentru a obține informații despre utilizatorul curent.

De fapt, este necesar în acest scop, datorită faptului că încarcă cea mai mare parte a nucleului WordPress. Presupunerea mea este că aceasta este o parte a plugin-ului care este apelată în afara contextului WordPress - cum ar fi un apel AJAX la fișier sau orice legat de asta, unde nu ai acces la funcțiile WordPress precum get_currentuserinfo. Totuși, nu este o practică bună să incluzi nucleul în acest fel.

Dacă te afli în interiorul unui plugin, WordPress este deja încărcat. Nu este nevoie să-l încarci manual.
În orice funcție care necesită ID-ul utilizatorului, trebuie să faci două lucruri:
- Să globalizezi variabila cu datele utilizatorului
- Să populezi variabila cu datele utilizatorului
Iată un pseudocod exemplificativ:
function some_function_that_needs_user_info() {
global $current_user;
get_currentuserinfo();
// Acum poți folosi $current_user->ID în codul tău.
}

PS: get_currentuserinfo()
este învechit începând cu WordPress 4.5.0. Folosește wp_get_current_user()
în loc. ... mai multe informații aici.
