Podemos ligar à ação admin_init
e verificar se o usuário é um administrador usando a função current_user_can()
para ver se o usuário atual pode manage_options
, que é algo que apenas um administrador pode fazer.
Este código, quando colado em seu arquivo functions.php, exibirá uma mensagem quando um não-administrador tentar acessar o painel:
function wpse_11244_restrict_admin() {
if ( ! current_user_can( 'manage_options' ) ) {
wp_die( __('You are not allowed to access this part of the site') );
}
}
add_action( 'admin_init', 'wpse_11244_restrict_admin', 1 );
Se preferir, você pode fornecer uma melhor experiência ao usuário redirecionando o usuário para a página inicial (a $_SERVER['PHP_SELF']
é para garantir que não redirecionaremos uma solicitação AJAX):
function wpse_11244_restrict_admin() {
if ( ! current_user_can( 'manage_options' ) && $_SERVER['PHP_SELF'] != '/wp-admin/admin-ajax.php' ) {
wp_redirect( home_url() );
}
}
add_action( 'admin_init', 'wpse_11244_restrict_admin', 1 );
Se você quiser redirecionar o usuário para a página de perfil dele, substitua home_url()
no código acima pelo link.