Onde posso encontrar documentação sobre quais caracteres são permitidos nos nomes de usuário e por quê?

11

Eu adoraria poder usar espaços em nomes de usuários, mas isso não parece possível. Existe uma redação no códice ou em algum lugar que explique quais caracteres são permitidos e por que ela foi restrita a esse conjunto ou são apenas apenas alfas e sugam isso?

Se eu quiser que os usuários usem algo diferente de um nome de usuário sem espaços, a minha única opção real é um plug-in que permite que os usuários façam login com seus endereços de email, mas ainda exija um nome de usuário apenas alfa na criação da conta?

Ah, e eu estou em um site da WPMU / rede.

Purcell
fonte

Respostas:

7

Você pode usar espaços em nomes de usuário, não há problema. Vários usuários no wordpress.org têm espaços em seus nomes de usuário.

O modo estrito permite apenas esses caracteres: a-z0-9<space>_.\-@

No entanto, o WP não é o padrão para o modo estrito.

Agora, o multisite possui restrições diferentes e pode remover espaços por lá. Isso ocorre porque os nomes de usuário são usados ​​para criar blogs independentes e instalações instaladas em vários sites.

Otto
fonte
Faz sentido e, no entanto, minha instalação múltipla não permitirá que eu crie usuários com espaços, @ ou. no nome. Eu olhei para formatting.php e parece permitir @. e espaços. Alguma idéia de onde eu deveria procurar para descobrir o que está impedindo esses caracteres? Gostaria apenas de saber por que eles são impedidos.
Purcell
3
Está na função wpmu_validate_user_signup em wp-includes / ms-functions.php e, sim, permite apenas letras e números. Definitivamente uma coisa multisite.
Otto
5

Eu não acho que exista alguma documentação oficial sobre isso, mas você pode dar uma olhada na sanitize_userfunção em 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 );
}

Você pode conectar-se a essa função e substituir o comportamento padrão pelo seu.

mike23
fonte
Obrigado por apontar formatting.php. Minha instalação múltipla não permitirá que eu crie usuários com espaços, @ ou. no nome. Eu olhei para formatting.php e parece permitir @. e espaços. Alguma idéia de onde eu deveria procurar para descobrir o que está impedindo esses caracteres? Gostaria apenas de saber por que eles são impedidos.
Purcell