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).
