Como restringiríamos o acesso à área de administração do WP a todos os usuários, exceto os administradores?
Os usuários do nosso site têm suas próprias páginas de perfil, que executam todas as funções necessárias.
Portanto, o administrador deve estar fora dos limites para todos, exceto os administradores.
Como fazer isso?
Respostas:
Podemos conectar-se à
admin_init
ação e verificar se o usuário é um administrador usando acurrent_user_can()
função para ver se o usuário atual podemanage_options
, o que apenas um administrador pode fazer.Este código, quando colado no seu arquivo functions.php, exibirá uma mensagem quando um não administrador tentar acessar o painel:
Se preferir, você pode fornecer uma melhor experiência ao redirecionar o usuário para a página inicial:
Se você deseja redirecionar o usuário para sua página de perfil, substitua
home_url()
no código acima pelo link.fonte
manage_options
capacidade do @cybmeta é a maneira aceita de verificar um usuário administrador. Até Mark Jaquith diz isso #manage_options
que algo que apenas "administradores" podem fazer e que não é verdade,manage_options
é um recurso e pode ser removido da função de administrador ou atribuído a outras funções de usuário. O importante é saber o que você quer fazer e escolher o melhor caminho. Veja minha resposta, eu explico isso.manage_options
commanage_network
. Este último desabilitaria o painel também para "administradores de site" padrão, mas deixava o acesso disponível para Superadministradores (administradores de rede).Você pode escrever um plugin e conectar-se
admin_init
.O codex, na verdade, fornece um exemplo com o recurso que você está procurando.
http://codex.wordpress.org/Plugin_API/Action_Reference/admin_init#Example:_Access_control
fonte
Algumas das respostas dadas podem ser boas na maioria das situações, mas acho que nenhuma delas garante exatamente o que é solicitado, porque nenhuma das respostas verifica as funções do usuário, verifica que os recursos e os recursos podem ser atribuídos e removidos. Portanto, para fornecer uma resposta exata, é necessário verificar as funções do usuário, não os recursos:
Se você deseja verificar se o usuário possui o recurso "manage_options", você pode. De fato, é a melhor opção na maioria dos casos. Embora esse recurso esteja associado por padrão aos usuários administradores, ele pode ser removido da função de administrador ou pode ser atribuído a outras funções de usuário. É por isso que, na maioria dos casos, verificar o que o usuário pode ou não fazer é melhor do que verificar a função do usuário. Portanto, na maioria dos casos, a verificação de recursos deve ser a maneira escolhida, mas você deve deixar esse conceito claro e escolher a melhor opção para sua situação e finalidade:
fonte
Experimente o plugin Adminimize .
Você pode bloquear as coisas muito bem com isso.
Você também pode tentar configurar o acesso através do arquivo htaccess
fonte
fonte
'administrator'
não é uma capacidade. Funciona apenas para manter a compatibilidade com versões anteriores. Verifique se há'update_core'
ou outros recursos administrativos.Coloque essas linhas no seu
functions.php
fonte
Tente isso, nunca através de erros em face de um usuário final. Contra um bom UX. Esse código os redireciona para a página inicial.
fonte
Eu usaria o WP Frontend e o configuraria para que todos esperem administradores.
fonte