Se o usuário atual for admin ou editor

73

Como posso verificar se o usuário atualmente conectado é um administrador ou um editor?

Eu sei fazer cada um individualmente:

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

Mas como faço para trabalhar juntos? Ie. usuário é admin ou editor?

    
por andy 30.01.2014 / 15:08
fonte

2 respostas

149

Primeira resposta, não relacionada ao WordPress, porque é apenas PHP, use o operador "OR" lógico:

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

Se você quiser verificar mais de duas funções, pode verificar se as funções do usuário atual estão dentro de uma matriz de funções, algo como:

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

No entanto, current_user_can pode ser usado não apenas com o nome da função do usuário, mas também com recursos. Assim, depois que os editores e administradores puderem editar as páginas, sua vida poderá ser mais fácil para verificar esses recursos:

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

Dê uma olhada aqui para mais informações sobre recursos.

    
por gmazzap 30.01.2014 / 15:16
fonte
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;
?>
    
por seowmx 29.09.2016 / 19:26
fonte