Si el usuario actual es administrador o editor

73

¿Cómo puedo verificar si el usuario que ha iniciado sesión actualmente es un administrador o un editor?

Sé cómo hacer cada uno singularmente:

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

Pero, ¿cómo los trabajo juntos? Es decir. usuario es administrador o editor?

    
pregunta andy 30.01.2014 - 15:08

2 respuestas

149

Primera respuesta, no relacionada con WordPress porque solo es PHP, use el operador lógico "O":

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

Si desea verificar más de dos roles, puede verificar si los roles del usuario actual se encuentran dentro de una variedad de roles, como por ejemplo:

$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 } ?>

Sin embargo, current_user_can se puede usar no solo con el nombre de rol de los usuarios, sino también con las capacidades. Por lo tanto, una vez que tanto los editores como los administradores pueden editar páginas, su vida puede ser más fácil comprobando esas capacidades:

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

Echa un vistazo a aquí para obtener más información sobre las capacidades.

    
respondido por el 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;
?>
    
respondido por el seowmx 29.09.2016 - 19:26

Lea otras preguntas en las etiquetas