Filter Username Feld bei der Registrierung für Obszönitäten und unerwünschte Wörter

Wie füge ich einen Filter zum Feld “Benutzername” hinzu, um zu verhindern, dass neue Benutzer unerwünschte Wörter wie administrator oder allgemeine Obszönitäten verwenden?

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

Solutions Collecting From Web of "Filter Username Feld bei der Registrierung für Obszönitäten und unerwünschte Wörter"

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

  • wpmu_validate_user_signup für mehrere Standorte und
  • registration_errors für Single-Site.

Der folgende nicht getestete Code zeigt, wie Sie sie verwenden können. Sie können das Array in user_name_is_forbidden() an Ihre Bedürfnisse user_name_is_forbidden() . 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 ); }