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 les pide porque ninguna de las respuestas verifica los roles de los usuarios, comprueban que las capacidades y capacidades pueden asignarse y eliminarse de los roles. 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 tenga 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 se puede eliminar de la función de administrador o se puede asignar a otras funciones de usuario. Es por eso que, en la mayoría de los casos, verificar lo que el usuario puede o no hacer es mejor que verificar la función del usuario. Por lo tanto, en la mayoría de los casos, verificar las capacidades debe 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();
}
}