Como faço para remover o acesso ao painel de funções de usuário específicas?

11

Gostaria de impedir que determinadas funções de usuário acessem o painel http://www.openeye.net/wp-admin/ . Mudei e reestilizei os perfis de usuário para uma nova página visível no site. Como eu faria isso?

Zach Shallbetter
fonte
Solicitei ao WooCommerce para alterar sua configuração, para que seja possível gerenciar autorizações para sua parte do menu. A idéia precisa de votos em: https://ideas.woocommerce.com Por favor, dê seu máximo de 3 pontos, obrigado!
Stefan

Respostas:

22

Para bloquear assinantes e colaboradores fora do administrador:

function wpse23007_redirect(){
  if( is_admin() && !defined('DOING_AJAX') && ( current_user_can('subscriber') || current_user_can('contributor') ) ){
    wp_redirect(home_url());
    exit;
  }
}
add_action('init','wpse23007_redirect');

Espero que ajude. Todas as funções fornecem ao usuário um recurso que é o nome dessa função, para que você possa usar qualquer nome de função como um recurso.

John P Bloch
fonte
Excelente, no entanto, estou recebendo um erro de sintaxe na segunda linha.
Zach Shallbetter
Ah, ok, isso está relacionado ao extra (depois de ('DOING_AJAX')) #
214 Zach Shallbetter
Oh, desculpe; isso foi intencional. Deveria haver outro fechando no final. Eu adicionei à resposta.
John P Bloch
Existe uma razão para isso não funcionar com o tema 2011 e o plug-in de membros?
Zach Shallbetter
11
Isso não parece funcionar em sites de rede, alguma ideia do porquê?
Zach Shallbetter
1
//If User Roll is Subscriber, It can not login in Dashboard 
function wpse23007_redirect()
{
    if( is_admin() && !defined('DOING_AJAX') && current_user_can('subscriber') )
    {
        wp_logout();
        wp_redirect(home_url());
        exit;
    }
}
add_action('init','wpse23007_redirect');
Ganpat Rabari
fonte
0
 add_action('init', function(){

      $redirect = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : home_url( '/' );
      $user = wp_get_current_user();
      if ( !defined('DOING_AJAX') && in_array( 'subscriber', (array) $user->roles ) ) {

          wp_redirect($redirect);
          exit();
      }
});
sudip
fonte