Einige der gegebenen Antworten können in den meisten Situationen in Ordnung sein, aber ich denke, keine von ihnen garantiert, genau das zu tun, was gefragt wird, weil keine der Antworten Benutzerrollen prüft, sie Fähigkeiten überprüfen und Fähigkeiten können Formularrollen zugewiesen und entfernt werden. Um eine genaue Antwort zu geben, müssen die Benutzerrollen überprüft werden, nicht die Funktionen:
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();
}
}
Wenn Sie überprüfen möchten, ob der Benutzer über die Funktion "manage_options" verfügt, können Sie dies tun. Tatsächlich ist es in den meisten Fällen die beste Option. Obwohl diese Funktion standardmäßig Administratorbenutzern zugeordnet ist, kann sie aus der Administratorrolle entfernt oder anderen Benutzerrollen zugewiesen werden. Aus diesem Grund ist es in den meisten Fällen besser, zu überprüfen, was der Benutzer kann oder nicht, als die Benutzerrolle zu überprüfen. In den meisten Fällen sollte die Überprüfung der Fähigkeiten der gewählte Weg sein, aber Sie müssen dieses Konzept klarstellen und die beste Option für Ihre Situation und Ihren Zweck auswählen:
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();
}
}