Care este metoda corectă de a obține ID-ul utilizatorului autentificat într-un plugin?

28 nov. 2012, 19:18:12
Vizualizări: 13.5K
Voturi: 0

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?

0
Toate răspunsurile la întrebare 2
3

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;
}
28 nov. 2012 19:22:51
Comentarii

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

PrivateUser PrivateUser
28 nov. 2012 19:27:49

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.

Chip Bennett Chip Bennett
28 nov. 2012 19:29:16

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.

Mario Peshev Mario Peshev
28 nov. 2012 19:41:25
1

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:

  1. Să globalizezi variabila cu datele utilizatorului
  2. 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.
}
28 nov. 2012 19:20:35
Comentarii

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.

nyedidikeke nyedidikeke
7 iun. 2017 11:14:45