Existe-t-il une balise conditionnelle qui me permette d’afficher certains contenus uniquement si l’utilisateur n’est PAS un abonné?
<?php
global $current_user; // Use global
get_currentuserinfo(); // Make sure global is set, if not set it.
if ( ! user_can( $current_user, "subscriber" ) ) // Check user object has not got subscriber role
echo 'User is a not Subscriber';
else
echo 'User is a Subscriber';
?>
Un moyen encore plus simple que @Brady vous a montré est d'utiliser current_user_can
:
if ( current_user_can( 'subscriber' ) )
echo "Hi, dear subscriber! Glad seeing you again!";
Il existe également un équivalent pour les installations de MU, nommé 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!";
Quand on regarde la source des fonctions pour single ou installations de MU , alors vous verrez que les deux s'appuient essentiellement sur wp_get_current_user()
et ensuite vérifient has_cap
. Maintenant, si vous voulez voir d'où vient le plafond, alors WP_User
classe/objet entre en jeu.
Ensuite, il y a aussi author_can( $GLOBALS['post'], 'capability' );
. Toutes ces fonctions sont dans ~/wp-includes/capabilities
juste en dessous les unes des autres.
Maintenant, où est la différence entre current_user_can(_FOR_BLOG)
et user_can
?
user_can()
est le plus récent (depuis la version 3.1), mais nécessite l'utilisateur en tant qu'objet. Vous pouvez donc l'utiliser dans les cas où vous ne souhaitez pas cibler l'utilisateur actuel, mais certains utilisateurs.current_user_can_*()
est évident.author_can()
vous permet de vérifier les capacités par rapport à un objet de publication. Cet objet est uniquement disponible pour les publications déjà présentes dans la base de données. C'est donc principalement pour autoriser/refuser l'accès à des fonctionnalités de publication spécifiques.