Problema con wp_get_current_user in WordPress 3.3.1
Stavo provando questo codice per ottenere le informazioni dell'utente corrente, ma non mostra nulla. La mia versione di WordPress è la 3.3.1
<?php
wp_get_current_user();
/**
* @example Utilizzo corretto: $current_user = wp_get_current_user();
* if ( !($current_user instanceof WP_User) )
* return;
*/
echo 'Username: ' . $current_user->user_login . '<br />';
echo 'Email utente: ' . $current_user->user_email . '<br />';
echo 'Nome utente: ' . $current_user->user_firstname . '<br />';
echo 'Cognome utente: ' . $current_user->user_lastname . '<br />';
echo 'Nome visualizzato: ' . $current_user->display_name . '<br />';
echo 'ID utente: ' . $current_user->ID . '<br />';
?>
L'output è:
Username:
Email utente:
Nome utente:
Cognome utente:
Nome visualizzato:
ID utente:
Hai provato a utilizzare l'alternativa "Utilizzo sicuro" indicata nella sezione commentata?
Onestamente non ho alcuna esperienza con wp_get_current_user(), poiché non l'ho mai utilizzato, ma in ogni caso, questo dovrebbe funzionare:
global $current_user;
echo 'Username: ' . $current_user->user_login . '<br />';
echo 'Email utente: ' . $current_user->user_email . '<br />';
echo 'Nome utente: ' . $current_user->user_firstname . '<br />';
echo 'Cognome utente: ' . $current_user->user_lastname . '<br />';
echo 'Nome visualizzato: ' . $current_user->display_name . '<br />';
echo 'ID utente: ' . $current_user->ID;
wp_get_current_user() dovrebbe fare la stessa cosa, poiché non è altro che un wrapper per le prime due righe sopra indicate, tuttavia, il codice sopra deve funzionare.
Prima di Wordpress 4.5
get_currentuserinfo()era un'opzione accettabile, ma ora è deprecata in favore diwp_get_current_user().
Puoi impostare wp_get_current_user() come variabile per accedervi facilmente nella tua funzione o pagina:
$current_user = wp_get_current_user();
Esempio:
if ( is_user_logged_in() ) {
$current_user = wp_get_current_user();
echo 'Username: ' . $current_user->user_login . '<br />';
echo 'Email utente: ' . $current_user->user_email . '<br />';
echo 'Nome utente: ' . $current_user->user_firstname . '<br />';
echo 'Cognome utente: ' . $current_user->user_lastname . '<br />';
echo 'Nome visualizzato: ' . $current_user->display_name . '<br />';
echo 'ID utente: '. $current_user->ID . '<br />';
echo 'Avatar utente: ' . get_avatar( $current_user->ID, 64 ) . '<br />';
} else {
echo 'Utente non loggato.';
}
Inoltre, è importante assicurarsi che tutto questo venga eseguito dopo init per evitare output vuoti.
Ecco come puoi ottenere l'utente corrente:
global $current_user;
$current_user = wp_get_current_user();
Dopodiché, puoi utilizzare $current_user->ID dove vuoi.
Esempio:
if ( is_user_logged_in() ) {
$current_user = wp_get_current_user();
echo 'Username: ' . $current_user->user_login . '--';
echo 'Email utente: ' . $current_user->user_email . '--';
echo 'Nome utente: ' . $current_user->user_firstname . '--';
echo 'Cognome utente: ' . $current_user->user_lastname . '--';
echo 'Nome visualizzato: ' . $current_user->display_name . '--';
echo 'ID utente: '. $current_user->ID . '--';
} else {
echo 'Utente non loggato.';
}
Mark, ho appena aggiornato la risposta, ma per rispondere alla tua domanda, il global non è necessario poiché questa è la ragione principale per usare wp_get_current_user() (clicca sul link per vedere dove la funzione accede al global se sei curioso di capire come funziona).
Bryan Willis