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:
add_action( 'admin_init', 'allow_admin_area_to_admins_only');
function allow_admin_area_to_admins_only() {
if( defined('DOING_AJAX') && DOING_AJAX ) {
//Allow ajax calls
return;
}
$user = wp_get_current_user();
if( empty( $user ) || !in_array( "administrator", (array) $user->roles ) ) {
//Redirect to main page if no user or if the user has no "administrator" role assigned
wp_redirect( get_site_url( ) );
exit();
}
}
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:
add_action( 'admin_init', 'admin_area_for_manage_options_only');
function admin_area_for_manage_options_only() {
if( defined('DOING_AJAX') && DOING_AJAX ) {
//Allow ajax calls
return;
}
if( ! current_user_can( "manage_options" ) ) {
//Redirect to main page if the user has no "manage_options" capability
wp_redirect( get_site_url( ) );
exit();
}
}