Filtern Sie das Feld für den Benutzernamen bei der Registrierung nach Obszönitäten und unerwünschten Wörtern

7

Wie füge ich dem Feld Benutzername einen Filter hinzu, um zu verhindern, dass sich neue Benutzer mit unerwünschten Wörtern wie administratoroder allgemeiner Obszönität registrieren ?

Idealerweise, wenn ich eine große Liste von Wörtern hinzufügen könnte, die mit der Option blockiert sind, ein Sternchen (*) als Platzhalter hinzuzufügen genitals*.

Christine Cooper
quelle

Antworten:

7

Es gibt zwei sehr unterschiedliche Haken, die Sie je nach Installation verwenden können:

  • wpmu_validate_user_signup für Multi-Site und
  • registration_errors für Single-Site.

Der folgende ungetestete Code zeigt, wie sie verwendet werden. Sie können das Array user_name_is_forbidden()an Ihre Bedürfnisse anpassen . Verwenden Sie reguläre Ausdrücke für die Übereinstimmungen.

// multi-site
add_filter( 'wpmu_validate_user_signup', function( $result )
{
    // there is already an error
    if ( $result['errors']->get_error_message('user_name') )
        return $result;

    if ( user_name_is_forbidden( $result['user_name'] ) )
        $result['errors']->add('user_name',  __( 'That username is not allowed.' ) );

    return $result;
});

//single-site
add_filter( 'registration_errors', function( $errors, $name )
{
    if ( user_name_is_forbidden( $name ) )
        $errors->add('user_name',  __( 'That username is not allowed.' ) );
    return $errors;
}, 10, 2);


function user_name_is_forbidden( $name )
{
    // If you need the character '~', write it as '\~'.
    $forbidden = array(
        'admin.*',
        'genitals.*',
        'system.*'
    );

    return (bool) preg_match( '~' . join( '|', $forbidden ) . '~i', $name );
}
Fuxia
quelle
3
Seien Sie vorsichtig, welche "schlechten Wörter" -Filter Sie verwenden. Einige Leute mögen "Shitake" -Pilze. Oder sind Fans von "klassischer" Musik. Oder kommen Sie von einem Ort namens "Scunthorpe".
Otto
6
@Otto Oder sie sind aus Essex. :)
Fuxia
Das war teuflisch! Funktioniert super toscho!
Christine Cooper
3
Christine, ich frage mich wirklich , wie viel von Ihrer Plattform Toscho bereits gebaut hat: D
kaiser
@Otto Eine lustige Kleinigkeit. Wir haben gerade Registrierungen geöffnet und ein neuer Benutzer hat sich bei "ScatArt * ..." registriert. Gerade als wir auf die Sperrschaltfläche geklickt haben, haben wir die E-Mail-Adresse des Benutzers gegoogelt und es scheint, dass es sich um eine echte Registrierung handelt, kein Trolling. Als ob!!
Christine Cooper