Registrierungs-Code verschicken

Ich erstelle für einen Freund eine Hochzeits-Homepage und möchte, dass sich nur die Hochzeitsgäste die Website anschauen können. Gibt es dafür schon eine Lösung?

Hinter dieser Frage stecken mehrere Anforderungen:

  1. Unangemeldete Besucher, sollen keine Inhalte sehen. Statt dessen müssen Besucher auf ein Anmeldeformular umgeleitet werden, um sich dort entweder erstmalig zu registrieren oder anmelden zu können.
  2. Damit sich nicht jeder registrieren kann, erhalten die Hochzeitsgäste eine Einladung, sich auf der Website zu registrieren. Der Blog-Inhaber soll nachvollziehen können, wie viele Gäste der Einladung gefolgt sind.
  3. Nach der Anmeldung sollen die Hochzeitsgäste nicht im Backend, sondern direkt auf der Startseite landen.
  4. Die Admin-Leiste soll für diese Besucher ausgeblendet werden.

Diesen Anforderungen können wir mit nur zwei Plugins folgen:
Easy Invitation Codes und Theme My Login.

Beide Plugins werden installiert und aktiviert. Danach beginnen wir mit der Einrichtung von Theme My Login. Im Menü TML aktivieren wir dazu die Punkte „Aktiviere Custom Redirection“, „Security“ und „Themed Profiles“.

Im Menü TML > Weiterleitung können wir festlegen, welche Benutzergruppe nach der Anmeldung wohin weitergeleitet wird (Punkt 3 unserer Anforderungsliste). Während der Administrator wahrscheinlich weiterhin im Backend landen möchte, um neue Beiträge zu erstellen oder Einstellungen vorzunehmen („Standard“), legen wir für Abonennten fest, dass sie zur urspünglichen Seite („Referrer“) zurückgeschickt werden.

Unter TML > Sicherheit können wir außerdem festlegen, dass nur angemeldete Besucher die Inhalte der Webseiten anschauen dürfen (Punkt 1 unserer Liste. Menü, Kopf- und Fußzeile sind allerdings weiterhin für jeden sichtbar, auch für unangemeldete Besucher).
Auf der gleichen Menüseite können wir außerdem über den Punkt „Private Anmeldung“ den sonst in WordPress üblichen Anmeldelink wp-login.php deaktivieren. Dadurch verbessern wir sogar ein bisschen die Sicherheit unserer Website, weil Hacking-Scripte die auf wp-login.php zugreifen, nun vor verschlossenen Türen stehen. Der unangemeldete Besucher kann sich nun über die Startseite anmelden. Zusätzlich lässt sich in diesem Menü noch die Zahl der Anmeldeversuche begrenzen, damit niemand beliebig oft Passwörter ausprobiert.

Über TML > Gestaltete Profile können wir die Anzeige des Backends und der Admin-Bar für Abonennten deaktivieren, in dem wir neben der Rolle „Subscriber“ im Abschnitt „Administrator-Zugang beschränken“ ein Häkchen setzen. (Punkt 4)

Mit dem Plugin Easy Invitation Codes können wir eigene Registrierungs-Codes generieren (Punkt 2) und dabei angeben, wie oft der Code verwendet werden darf – z.B. nur einmal, wenn es ein persönlicher Code für eine Person ist. Unter „Add New Codes“ können neue Codes erstellt werden und im Menü „Invitation Codes“ werden alle eingerichteten Codes aufgelistet. Hier wird in den Spalten daneben aufgeführt, wie oft die Codes verwendet wurden und welche User sich damit registriert haben. Wer bequem eine Reihe mehrerer Codes generieren möchte, findet dazu unter „Generate Codes“ ein passendes Eingabeformular.

Leider hat das Plugin in der aktuellen Version 1.2 einen winzigen Bug und dem Plugin-Autor Julio Potier fehlen im Moment die Kapazitäten zur Pflege des Plugins: Selbst generierte Codes werden nach der Eingabe als Kleinbuchstaben abgespeichert, im Login-Formular werden aber alle Eingaben automatisch in Großbuchstaben konvertiert. Folglich wird jeder korrekt eingegebene Registrierungscode abgelehnt. Der Bug lässt sich aber recht einfach korrigieren: In der Datei inc/back-end.php muss in Zeile 172 der Code $code = sanitize_key( $code ); ersetzt werden mit $code = strtoupper( sanitize_key( $code ) );. Nun klappt es auch mit den Anmeldecodes.

Diese Lösung zeigt, wie schön sich auch zwei völlig unterschiedliche Plugins ergänzen können.