Wo finde ich Dokumentation darüber, welche Zeichen in Benutzernamen zulässig sind und warum?

11

Ich würde gerne Leerzeichen in Benutzernamen verwenden können, aber dies scheint nicht möglich zu sein. Gibt es eine Beschreibung im Kodex oder irgendwo, die erklärt, welche Zeichen erlaubt sind und warum sie auf diese Menge beschränkt waren, oder sind es nur Alphas und saugen sie auf?

Wenn ich möchte, dass Benutzer etwas anderes als einen Benutzernamen ohne Leerzeichen verwenden, ist meine einzige echte Option ein Plugin, mit dem Benutzer sich stattdessen mit ihren E-Mail-Adressen anmelden können, bei der Kontoerstellung jedoch nur ein Alpha-Benutzername erforderlich ist?

Oh, und ich bin auf einer WPMU / Netzwerkseite.

Purcell
quelle

Antworten:

7

Sie können Leerzeichen in Benutzernamen verwenden, kein Problem. Mehrere Benutzer auf wordpress.org haben Leerzeichen in ihren Benutzernamen.

Im strengen Modus sind nur folgende Zeichen zulässig: a-z0-9<space>_.\-@

WP verwendet jedoch nicht standardmäßig den strengen Modus.

Jetzt hat Multisite unterschiedliche Einschränkungen und kann dort Leerzeichen entfernen. Dies liegt daran, dass Benutzernamen verwendet werden, um unabhängige Blogs und dergleichen bei Installationen mit mehreren Standorten zu erstellen.

Otto
quelle
Sinnvoll, und dennoch erlaubt mir meine Mehrfachinstallation nicht, Benutzer mit Leerzeichen, @ oder zu erstellen. im Namen. Ich habe mir formatierung.php angesehen und es scheint @ zu erlauben. und Räume. Irgendeine Idee, wo ich suchen sollte, um herauszufinden, was diese Charaktere verhindert? Ich möchte nur wissen, warum sie verhindert werden.
Purcell
3
Es befindet sich in der Funktion wpmu_validate_user_signup in wp-includes / ms-functions.php und erlaubt nur Buchstaben und Zahlen. Auf jeden Fall eine Multisite-Sache.
Otto
5

Ich glaube nicht, dass es eine offizielle Dokumentation dazu gibt, aber Sie können sich die sanitize_userFunktion in folgender Adresse ansehen wp-includes/formatting.php:

function sanitize_user( $username, $strict = false ) {
    $raw_username = $username;
    $username = wp_strip_all_tags( $username );
    $username = remove_accents( $username );
    // Kill octets
    $username = preg_replace( '|%([a-fA-F0-9][a-fA-F0-9])|', '', $username );
    $username = preg_replace( '/&.+?;/', '', $username ); // Kill entities

    // If strict, reduce to ASCII for max portability.
    if ( $strict )
        $username = preg_replace( '|[^a-z0-9 _.\-@]|i', '', $username );

    $username = trim( $username );
    // Consolidate contiguous whitespace
    $username = preg_replace( '|\s+|', ' ', $username );

    return apply_filters( 'sanitize_user', $username, $raw_username, $strict );
}

Sie können sich in diese Funktion einbinden und das Standardverhalten mit Ihrem eigenen überschreiben.

mike23
quelle
Vielen Dank für den Hinweis auf formatierung.php. Bei meiner Mehrfachinstallation kann ich keine Benutzer mit Leerzeichen, @ oder erstellen. im Namen. Ich habe mir formatierung.php angesehen und es scheint @ zu erlauben. und Räume. Irgendeine Idee, wo ich suchen sollte, um herauszufinden, was diese Charaktere verhindert? Ich möchte nur wissen, warum sie verhindert werden.
Purcell