toscho.design

WordPress: E-Mail-Validation überschreiben

Die internen Funktionen, mit denen WordPress E-Mails auf ihre Gültigkeit überprüft, sind leider sehr … ungenau. Meistens kann man damit leben, beim lokalen Testen nervt es aber doch, daß man immer eine zweiteilige Domain angeben muß. me@localhost beispielsweise wird zurückgewiesen, obwohl das eine ganz normale, funktionierende Adresse ist.

Wollen wir das Please enter a correct email address. oder dessen jeweilige Übersetzung nur noch sehen, wenn die Adresse wirklich kaputt ist, so müssen wir an zwei Stellen einhaken: 'is_email' und 'sanitize_email' für die gleichnamigen Funktionen.

Ich verwende der Einfachheit halber PHPs eingebautes filter_var(). Auch das ist nicht perfekt, aber besser als das, was WordPress an Bord hat. Das Ticket dazu ruht seit langer Zeit …

GitHub: https://gist.github.com/972837

if ( ! function_exists( 't5_extend_email_checks' ) )
{
    add_filter( 'is_email',       't5_extend_email_checks', 10, 2 );
    add_filter( 'sanitize_email', 't5_extend_email_checks', 10, 2 );

    function t5_extend_email_checks( $result, $email )
    {
        return filter_var( $email, FILTER_VALIDATE_EMAIL );
    }
}

Ergebnis: Diesen Nutzer kann ich problemlos anlegen.

tester@localhost