Ob eine Internetseite mit dem Content-Management-System WordPress aufgebaut wurde, erkennt man in den allermeisten Fällen am schnellsten, wenn man in der Adresszeile des Browsers hinter die Website-Adresse das Anhängsel /wp-admin
eintippt. Dann landet man in der Regel auf einer Seite, die so aussieht:
Ganz klar: Hinter einer solchen Website steckt WordPress! Man kann diese Anmeldeseite individuell gestalten, um sich von der Masse abzuheben. Man kann die Loginseite auch verstecken, so dass der oben beschriebene Testaufruf auf einer Fehlerseite landet. Dann erhalten registrierte Benutzer Zugriff auf den Verwaltungsbereich nur über eine Umleitungsseite. (Wie das geht, beschreibe ich in einem separaten Text.)
Aber warum in aller Welt sollte man die WordPress-Steuerseite /wp-admin
komplett sperren? „Dann kann sich ja niemand mehr anmelden“, wirst Du sagen. Und damit hast Du natürlich vollkommen recht.
WordPress-Administration sperren?
Natürlich geht es nicht darum, die WordPress-Verwaltung für Mitarbeiter an den Seiteninhalten zu sperren. Vielmehr gibt es Situationen, in denen es sinnvoll ist, bestimmte Benutzerrollen davon abzuhalten, sich in der WordPress-Administration herumzutreiben.
Im letzten Beitrag hatte ich beschrieben, wie man es anstellt, damit angemeldete Abonnenten beim Besuch der Website den schwarzen Adminbar nicht zu Gesicht bekommen. (Wenn man zum Beispiel die Website nur angemeldeten Abonnenten anzeigen möchte, ist es sinnvoll, sie nicht mit WordPress-Innereien zu belästigen, mit denen sie ohnehin nichts anfangen können.)
Konsequent ist es in einem solchen Fall, diesen Abonnenten nicht nur den Adminbar vorzuenthalten, sondern überhaupt den Zugang in den Adminbereich zu sperren. Damit niemand auf die Idee kommt, es einmal mit /wp-admin
zu versuchen, nur um danach auf einer weitgehend leeren Verwaltungsseite zu landen, die keine sinnvollen Funktionen bietet.
Wie geht das?
Lade aus dem Serververzeichnis Deines aktiven Themes die Datei functions.php mit Hife eines FTP-Programms auf Deinen PC herunter und öffne sie mit mit einem Texteditor. An das Ende dieser Datei, fügst Du vor der letzten Zeile ?>
den folgenden Programmcode ein:
/**
* Zugriff von Nichtadmins auf wp-admin verhindern
*/
add_action( 'init', 'block_users' );
function block_users() {
if ( ! current_user_can( 'administrator' ) &&
! is_admin() )
) {
wp_redirect( home_url() );
exit;
}
}
Achtung: Dieser Code leitet alle angemeldeten Benutzer, die keine Administratorenrechte haben, auf die öffentliche Startseite um. Wenn man diese Umleitung lediglich auf Abonnenten beschränken möchte, kann man ! current_user_can( 'administrator' ) && ! is_admin()
durch ! current_user_can( 'edit_posts' )
ersetzen. In diesem Fall haben Redakteure, Autoren und Mitarbeiter weiterhin Zugriff auf /wp-admin
.
Danach lädst Du die abgeänderte Datei functions.php mit dem FTP-Programm von Deinem PC wieder hoch in das Themeverzeichnis auf Deinem Webserver.
Vorsicht: Beachte beim Bearbeiten und Hochladen unbedingt meine Hinweise im Beitrag zum Child-Theme. Denn mit der nächsten Aktualisierung des installierten Standardthemes werden alle Inhalte der Datei functions.php dort wieder durch die Standardinhalte überschrieben. Das kannst Du verhindern, indem Du ein Child-Theme anlegst und alle permanenten Änderungen dort einträgst.
Zusammenfassung: Wenn man für bestimmte Benutzerrollen den Zugang in den Administrationsbereich verbieten möchte, sind zwei Schritte sinnvoll. Zum einen sollte man den WordPress-Verwaltungsbalken für solche Benutzer unsichtbar machen. Und zum anderen sollte man den Zugang selbst sperren, so wie es hier auf dieser Seite beschrieben wird.