Die Login-Seite in WordPress ohne Plugin anpassen

WordPress Login Seite BeispielDie normale, von WordPress vorgesehene Login-Seite ins Backend eines Blogs ist weder besonders schön, noch besonders individuell. Man erreicht sie in der Regel, indem man /wp-login.php an die eingegebene URL anhängt. Sie erfüllt ihren Zweck, aber sie sieht standardmäßig bei jedem Blog gleich aus. Es gibt aber Gründe, aus denen man diese Seite vielleicht individualisieren möchte. Das kann man auf verschiedene Arten tun. Es gibt einige Plugins dafür, aber man kann die Login-Seite auch direkt über sein Theme verändern. Wie das funktioniert, erkläre ich heute.

Insgesamt benötigen wir folgende Schritte:

Vorbereitung

Als erstes müssen wir dafür sorgen, dass das, was wir verändern, auch in den <head>-Bereich der Login-Seite geladen wird. Dazu gehen wir in unseren Theme-Ordner und öffnen die Datei functions.php. Dort fügen wir folgende Funktion hinzu:

function custom_login() {
echo '<link rel="stylesheet" type="text/css" href="'.get_stylesheet_directory_uri().'/login/login.css" />';
}
add_action('login_head', 'custom_login');

Diese Funktion fügt auf der Login-Seite eine CSS-Datei mit dem Namen login.css hinzu. Sie liegt im Unterordner login des aktuellen Themeordners – oder besser gesagt: sie muss dahin. Es gibt diese Datei nämlich noch nicht. Deshalb müssen wir sie nun erstellen. Noch mal der Pfad: /wp-content/themes/THEMEORDNER/login/login.css (“THEMEORDNER” ist natürlich durch den Namen des Themeordners zu ersetzen).

Die gerade erstellte login.css öffnen wir jetzt mit einem Text-Editor und führen die gewünschten Änderungen durch. Zuerst müssen wir uns klar machen, dass hier ein bereits vorhandenes Stylesheet überschrieben wird. Das bedeutet, dass wir nicht einfach nur das, was wir gerne hätten, hinzufügen können, sondern das, was schon da ist und was wir nicht brauchen, mindestens deaktivieren müssen. Es empfiehlt sich die Webkonsole von Chrome oder Firefox zu verwenden, um den Aufbau des Formulars im Detail besser nachvollziehen zu können. Ich werde im folgenden versuchen, das wichtigste zusammenzutragen:

Der Hintergrund

Bestandteile der Login-Seite
Abgesehen vom Hintergrund müssen diese Bestandteile der Login-Seite überschrieben werden. Als erstes kümmern wir uns um den Hintergrund. Um diesen zu verändern, brauchen wir folgenden Code:

body.login {
    background: #333333;
}

Statt der Hintergrundfarbe kann natürlich auch ein Bild eingefügt werden.

Bevor wir damit anfangen, kehren wir noch einmal zur functions.php zurück. Standardmäßig ist das Logo nämlich ein Link zu http://wordpress.org. Auch diesen können wir überschreiben. Dazu benötigen wir folgende Funktion:

add_filter( 'login_headerurl', 'custom_login_header_url' );
function custom_login_header_url($url) {
return 'https://susanne-lueders.de/';
}

Wenn wir schon mal dabei sind, können wir den Inhalt des title-Attributs auch direkt verändern. Dieses steht ursprünglich auf “Powered by WordPress”, was dann als Fähnchen an der Maus angezeigt wird, wenn man sie über dem Link stehen lässt. Das ändern wir so:

add_filter('login_headertitle', 'custom_login_header_title');
function custom_login_header_title($title) {
return 'Susanne Lüders';
}

Vorausgesetzt, dass wir im weiteren Verlauf nicht noch Schriftarten über die functions.php in den head-Bereich der Login-Seite importieren wollen, können wir sie jetzt endgültig schließen.

Weiter geht’s in der login.css mit dem Austausch des Logos:
Logo austauschen

Für das Logo ist wichtig, alle erwähnten Befehle im CSS verwendet werden, weil die Informationen des WordPress-Logos sonst nicht korrekt überschrieben werden:

.login h1 a {
    background-image: url('../images/logo.png');
    background-size: 320px 71px;
    width: 320px;
    height: 71px;
}

Die Message- und Error-Box

Message- und Error-Box

Die Message-Box ist im Bild zu sehen. Sie zeigt an, wenn ein User sich erfolgreich abgemeldet hat. An gleicher Stelle wird auch die Error-Box eingeblendet, die erscheint, wenn beim Login-Vorgang ein Fehler aufgetreten ist.
Wer die Farben der Message-Box ändern will, sollte sich diesen Code anpassen:

.login .message {
    font-family: Arial, sans-serif;
    background: #ffffe0;
    border: #e6db55;
    color: #00000;
}

An die Error-Box kommt man so:

.login #login_error {
    /*...*/
}

Das Formular

Das Formular
Im Formular selber sind einige Einzelteile anzupassen. Allgemeine Einstellungen wie den Hintergrund des Formulars nimmt man an folgender Stelle vor:

.login form {
    background: #af8655;
    color: #333333;
    border: none;
    box-shadow: none;
    -webkit-box-shadow: none;
}

Die anderen Details gehen wir mal von oben nach unten durch. Als erstes die Labels für die Input-Felder:

.login label {
    /*...*/
}

Die input-Felder selbst:

.login input {
    /*...*/
}

Die Erinnerungs-Checkbox:

.login .forgetmenot label {
    /*...*/
}

Und zu guter Letzt kommt noch der Button. Hier ist vor allem background-image von großer Bedeutung. Darüber wird der Verlauf im Hintergrund des Buttons gebildet und der muss ersetzt oder ausgeschaltet werden, sonst bleibt der Button mindestens beim Überfahren mit der Maus hübsch blau.

.login input.button-primary {
    font-family: 'OpenSansRegular', Arial, sans-serif;
    text-transform: uppercase;
    background: #ea5b0c;
    background-image: none;
    border:none;
    border: #cebca5 solid 1px;
    -webkit-box-shadow: none;
    box-shadow: none;
    /*...*/
}
.login input.button-primary:hover,
.login input.button-primary:focus {
    background-image: none;
    border:none;
    text-shadow: #000000 1px 1px 1px;
    -webkit-box-shadow: none;
    box-shadow: none;
    /*...*/
}

Der gestalterischen Freiheit sind hier keine Grenzen gesetzt.

Die untere Navigation

Untere Navigation
Jetzt bleiben nur noch die Links unterhalb des Login-Formulars übrig. Der Link “Passwort vergessen” ist ein div mit der id #nav und der Link zurück auf den Blog hört auf die id #backtoblog.

.login #nav,
.login #backtoblog {
    /*...*/
}

Insgesamt lassen sich die Details sicherlich noch ausfeilen und verfeinern. Wie bereits erwähnt ist es bestimmt nicht verkehrt, in irgendeiner Form eine Webkonsole zu benutzen, um weitere Feinheiten der Login-Seite auszuloten.
Ein letzter Hinweis zum Thema Schriftarten: Die im Theme verwendeten Schriftarten werden nicht automatisch in die Login-Seite importiert und können folglich auch nicht verwendet werden. Man kann sie aber nach dem gleichen Prinzip wie dem vom Stylesheet login.css einbinden.

Am Ende könnte das Ganze zum Beispiel so aussehen:
WordPress Login Seite Beispiel

Links zu den entscheidenden Stellen im WordPress-Codex:
http://codex.wordpress.org/Plugin_API/Filter_Reference#Database_Reads_4
http://codex.wordpress.org/Plugin_API/Action_Reference/login_head