Risposte:
Un modo ancora più semplice, che @Brady ti ha mostrato è l'uso di current_user_can
:
if ( current_user_can( 'subscriber' ) )
echo "Hi, dear subscriber! Glad seeing you again!";
Esiste anche un equivalente per le installazioni MU, chiamato current_user_can_for_blog
:
global $blog_id;
if ( current_user_can_for_blog( $blog_id 'subscriber' ) )
echo "Hi, dear subscriber! Glad seeing you again on this blog!";
Quando guardi l'origine delle funzioni per installazioni singole o MU , vedrai che entrambi fondamentalmente si basano su wp_get_current_user()
e quindi eseguono un controllo has_cap
. Ora se vuoi vedere da dove viene il tappo, allora la WP_User
classe / oggetto entra in gioco.
Poi c'è anche author_can( $GLOBALS['post'], 'capability' );
. Tutte quelle funzioni sono dentro l'una ~/wp-includes/capabilities
sotto l'altra.
Ora, dov'è la differenza tra current_user_can(_FOR_BLOG)
e user_can
?
user_can()
è il più recente (dal 3.1), ma ha bisogno dell'utente come oggetto. Quindi puoi usarlo nei casi in cui non vuoi scegliere come target l'utente corrente, ma alcuni utenti.current_user_can_*()
è ovvio.author_can()
consente di verificare le funzionalità rispetto a un oggetto post. Questo oggetto è disponibile solo per i post che sono già nel DB. Quindi è principalmente per consentire / negare l'accesso a funzionalità di post specifiche.È ciò che intendi?
global $userdata;
get_currentuserinfo();
if ( $userdata->user_level != 0 )//check user level by level ID
{
echo 'User is a not Subscriber';
}
else
{
echo 'User is a Subscriber';
}
Maggiori dettagli sugli ID per diversi livelli: http://codex.wordpress.org/Roles_and_Capabilities#User_Levels
Esiste anche la funzione current_user_can (), che consente di indicare capacità specifiche per una maggiore flessibilità. http://codex.wordpress.org/Function_Reference/current_user_can
To maintain backwards compatibility with plugins that still use the user levels system (although this is very much discouraged), the default Roles in WordPress also include Capabilities that correspond to these levels. User Levels were finally deprecated in version 3.0.
current_user_can()
pagina del codice AFAIK non è cambiato.