WordPress: Registrierung auf eMail-Domain einschränken

Zwei WordPress Registrierungsseiten

Wie schränke ich die Registrierung auf bestimmte eMail-Domains ein?

Heute gibt es einen Quick-Tipp für alle WordPress Nutzer*innen, die einfach und schnell die Registrierung von WordPress einschränken möchten.

Das kann zum Beispiel notwendig sein, wenn Du nur Registrierungen von Nutzern mit eMailadressen deines Vereins oder deiner Firma zulassen möchtest.

Bevor wir starten, noch ein wichtiger Hinweis: Neben den regelmäßigen Backups, die Du hoffentlich bereits anlegst, gilt: Lege unbedingt auch kurz vor wichtigen Änderungen ein Backup deiner Website an. Dann kannst Du – sollte mal etwas schief laufen – schnell wieder zurück zu einer funktionierenden Website.
Übrigens: In meinem WordPress-Wartungsservice ist auch ein regelmäßiges Backup integriert, solltest du noch keine Backup-Lösung gefunden haben.

Um in WordPress die Validierung der Registrierung zu bearbeiten, kannst Du einfach einen Code-Schnipsel in der functions.php deines WordPress (Child-) Theme hinzufügen. WordPress bietet dazu den Look registration_errors.

Die technischen Hintergründe und die Funktionsweise des Hook findest Du in den WordPress Developer Resources.

Wir implementieren im folgenden eine Überprüfung der vom Nutzer eingegebenen eMailadresse. Endet diese nicht auf die von uns festgelegte Zeichenfolge, wird ein Fehler dem WordPress-internen Error-Bag (Fehler-„Tasche“) hinzugefügt.
Durch das Hinzufügen dieses Fehlers, schlägt die Registrierung fehl.

Endet die eMailadresse auf die gewünschte Zeichenfolge, wird kein Fehler hinzugefügt und die Registrierung funktioniert (oder wirft einen Fehler, sollten die eingegeben Daten andere, WordPress-interne Fehler auslösen ;-)).

Wichtig: Die hier gezeigte Lösung funktioniert nur ab PHP 8, da wir auf die PHP-eigene Funktion str_ends_with() zurückgreifen!

Los gehts…

Schritt-für-Schritt: Mit dem WordPress Hook „registration_errors“ zur eigenen Validierungsregel.

Schritt 1: Öffne die „functions.php“ deines WordPress-Theme und füge folgenden Code am Ende der Datei ein:

function ith_restrict_registration_mail($errors, $sanitizedUserLogin, $userMail) {
  if (!str_ends_with($userMail, '@allowed.tld')) {
    $errors->add('mailError', 
                 esc_html__('You are not allowed to register.', 'trans_txtdomain')
                );
  }

  return $errors;
}
add_filter('registration_errors', 'ith_restrict_registration_mail', 10, 3);

Schritt 2: Ersetze den Platzhalter „@allowed.tld“ durch die eMail-Domain auf die du die Registrierung einschränken möchtest.

Schritt 3: Speichere die „functions.php“ Datei ab, lade deine Website neu und teste die Funktion.

Du solltest jetzt, sobald Du dich mit einer eMailadresse registrierst, welche nicht die erlaubte Domain enthält, eine Fehlermeldung erhalten. Wenn Du dich mit einer eMailadresse mit der erlaubten Domain registrierst, wird keine Fehlermeldung generiert und die Registrierung funktioniert.

Einfach, schnell und super praktisch. Nicht?
Bei Schwierigkeiten in der Umsetzung oder wenn es nicht so klappt, wie Du es dir vorstellst: Ich unterstütze dich gerne und unkompliziert. Melde dich einfach per Kontaktformular, eMail oder Anruf bei mir.