¿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.

Purcell
fuente

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.

Otón
fuente
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.

mike23
fuente
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