Algunas de las respuestas dadas pueden estar bien en la mayoría de las situaciones, pero creo que ninguna de ellas garantiza hacer exactamente lo que se solicita porque ninguna de las respuestas verifica los roles de los usuarios, verifican que las capacidades y las capacidades se pueden asignar y eliminar de los formularios. Entonces, para dar una respuesta exacta, se deben verificar los roles de los usuarios, no las capacidades:
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();
}
}
Si desea verificar que el usuario tiene la capacidad de "administrar opciones", puede hacerlo. De hecho, es la mejor opción en la mayoría de los casos. Aunque esta capacidad está asociada de forma predeterminada a los usuarios administradores, la capacidad puede eliminarse de la función de administrador o puede asignarse a otras funciones de usuario. Es por eso que, en la mayoría de los casos, verificar lo que el usuario puede o no puede hacer es mejor que verificar la función del usuario. Por lo tanto, en la mayoría de los casos, verificar las capacidades debería ser la forma elegida, pero debe tener este concepto claro y elegir la mejor opción para su situación y propósito:
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();
}
}