Si l'utilisateur actuel est admin ou éditeur

73

Comment puis-je vérifier si l'utilisateur actuellement connecté est un administrateur ou un éditeur?

Je sais comment faire chacun singulièrement:

<?php if( current_user_can('editor')) {  ?> 
    <!--stuff here for editors-->
<?php } ?>
<?php if( current_user_can('administrator')) { ?>
    <!--stuff here for admins-->
<?php } ?>

Mais comment puis-je les travailler ensemble? C'est à dire. l'utilisateur est admin ou éditeur?

    
posée andy 30.01.2014 - 15:08

2 réponses

149

Première réponse, pas liée à WordPress car il s’agit uniquement de PHP, utilisez la logique "OU":

<?php if( current_user_can('editor') || current_user_can('administrator') ) {  ?> 
    // stuff here for admins or editors
<?php } ?>

Si vous souhaitez vérifier plus de deux rôles, vous pouvez vérifier si les rôles de l'utilisateur actuel se trouvent dans un tableau de rôles, par exemple:

$user = wp_get_current_user();
$allowed_roles = array('editor', 'administrator', 'author');
<?php if( array_intersect($allowed_roles, $user->roles ) ) {  ?> 
   //stuff here for allowed roles
<?php } ?>

Toutefois, current_user_can peut être utilisé non seulement avec le nom du rôle de l'utilisateur, mais également avec des fonctionnalités. Ainsi, une fois que les éditeurs et les administrateurs peuvent modifier des pages, votre vie peut être plus facile à vérifier pour ces fonctionnalités:

<?php if( current_user_can('edit_others_pages') ) {  ?> 
    // stuff here for user roles that can edit pages: editors and administrators
<?php } ?>

Consultez ici pour plus d'informations sur les fonctionnalités.

    
réponse donnée gmazzap 30.01.2014 - 15:16
0
<?php if( current_user_can('editor')) :
  echo "welcome";
elseif( current_user_can('member')) :
  echo "welcome";
else :
 wp_die("<h2>To view this page you must first <a href='". wp_login_url(get_permalink()) ."' title='Login'>log in</a></h2>");
endif;
?>
    
réponse donnée seowmx 29.09.2016 - 19:26

Lire d'autres questions sur les étiquettes