web-dev-qa-db-fra.com

Savoir si l'utilisateur connecté n'est pas abonné

Existe-t-il une balise conditionnelle qui me permette d’afficher certains contenus uniquement si l’utilisateur n’est PAS un abonné?

8
Nasir Zia
<?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';
?>
9
Brady

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!";

MU

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!";

Derrière le rideau

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.

Autres membres de cet ensemble

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.

Quand utiliser quoi?

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.
15
kaiser