¿Dónde puedo encontrar documentación sobre qué caracteres están permitidos en los nombres de usuario y por qué?


11

Me encantaría poder usar espacios en los nombres de usuario, pero esto no parece posible. ¿Existe una escritura en el códice o en algún lugar que explique qué caracteres están permitidos y por qué se restringió a ese conjunto o son solo alfa y absorben?

Si quiero que los usuarios usen algo más que un nombre de usuario sin espacios, ¿es mi única opción real un complemento que permita a los usuarios iniciar sesión con sus direcciones de correo electrónico, pero que todavía requiera un nombre de usuario solo alfa en la creación de la cuenta?

Ah, y estoy en un sitio WPMU / red.

Respuestas:


7

Puede usar espacios en los nombres de usuario, no hay problema. Varios usuarios en wordpress.org tienen espacios en sus nombres de usuario.

El modo estricto solo permite estos caracteres: a-z0-9<space>_.\-@

Sin embargo, WP no pasa por defecto al modo estricto.

Ahora, el multisitio tiene diferentes restricciones y puede eliminar espacios allí. Esto se debe a que los nombres de usuario se utilizan para crear blogs independientes y similares en instalaciones de varios sitios.


Tiene sentido y, sin embargo, mi instalación múltiple no me permitirá crear usuarios con espacios, @ o. en el nombre. Miré a formatting.php y parece permitir @. y espacios. ¿Alguna idea de dónde debería buscar para descubrir qué está evitando estos personajes? Solo me gustaría saber por qué se previenen.
Purcell

3
Está en la función wpmu_validate_user_signup en wp-includes / ms-functions.php, y sí, solo permite letras y números. Definitivamente una cosa multisitio.
Otto

5

No creo que haya documentación oficial al respecto, pero puedes echar un vistazo a la sanitize_userfunción en 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 );
}

Podría engancharse a esa función y anular el comportamiento predeterminado con el suyo.


Gracias por señalar formatting.php. Mi instalación múltiple no me permitirá crear usuarios con espacios, @ o. en el nombre. Miré a formatting.php y parece permitir @. y espacios. ¿Alguna idea de dónde debería buscar para descubrir qué está evitando estos personajes? Solo me gustaría saber por qué se previenen.
Purcell
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.