Gdzie mogę znaleźć dokumentację dotyczącą dopuszczalnych znaków w nazwach użytkowników i dlaczego?

11

Chciałbym móc używać spacji w nazwach użytkowników, ale nie wydaje się to możliwe. Czy w kodeksie jest zapis, czy gdzieś, który wyjaśnia, jakie znaki są dozwolone i dlaczego został ograniczony do tego zestawu, czy tylko tylko alfabet i ssać?

Jeśli chcę, aby użytkownicy używali czegoś innego niż nazwa użytkownika bez spacji, czy moja jedyna prawdziwa opcja jest wtyczką, która umożliwia użytkownikom logowanie się przy użyciu swoich adresów e-mail, ale nadal wymaga nazwy użytkownika tylko alfa podczas tworzenia konta?

Aha, i jestem na stronie WPMU / sieci.

Purcell
źródło

Odpowiedzi:

7

Możesz używać spacji w nazwach użytkowników, nie ma problemu. Kilku użytkowników na wordpress.org ma spacje w nazwach użytkowników.

Tryb ścisły pozwala tylko na następujące postacie: a-z0-9<space>_.\-@

Jednak WP nie jest domyślnie ustawiony na tryb ścisły.

Teraz na wielu stronach obowiązują inne ograniczenia i może tam usuwać spacje. Wynika to z tego, że nazwy użytkowników są używane do tworzenia niezależnych blogów i takich instalacji w wielu witrynach.

Otto
źródło
Ma to sens, a jednak moja instalacja wielu nie pozwoli mi tworzyć użytkowników ze spacjami, @ lub. w imieniu. Spojrzałem na formatting.php i wydaje się, że pozwala na @. i spacje. Masz pojęcie, gdzie powinienem szukać, aby dowiedzieć się, co zapobiega tym postaciom? Chciałbym tylko wiedzieć, dlaczego im zapobiega się.
Purcell,
3
Jest w funkcji wpmu_validate_user_signup w wp-include / ms-functions.php i tak, dopuszcza tylko litery i cyfry. Zdecydowanie sprawa wielu stron.
Otto,
5

Nie wydaje mi się, żeby istniała jakaś oficjalna dokumentacja na ten temat, ale możesz zobaczyć tę sanitize_userfunkcję w 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 );
}

Możesz podłączyć się do tej funkcji i zastąpić domyślne zachowanie własnym.

mike23
źródło
Dziękujemy za zwrócenie uwagi na formatowanie.php. Moja instalacja wielokrotna nie pozwoli mi tworzyć użytkowników ze spacjami, @ lub. w imieniu. Spojrzałem na formatting.php i wydaje się, że pozwala na @. i spacje. Masz pojęcie, gdzie powinienem szukać, aby dowiedzieć się, co zapobiega tym postaciom? Chciałbym tylko wiedzieć, dlaczego im zapobiega się.
Purcell,