¿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. ¿Hay algún informe 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 es solo alfas y lo absorbe?

Si quiero que los usuarios usen algo que no sea un nombre de usuario sin espacios, ¿es mi única opción real un complemento que permite a los usuarios iniciar sesión con sus direcciones de correo electrónico, pero aún requiere un nombre de usuario solo alfa en la creación de la cuenta? >

Ah, y estoy en un sitio WPMU / network.

    
pregunta Purcell 05.07.2011 - 17:53

2 respuestas

7

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

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

Sin embargo, WP no se establece de forma predeterminada en modo estricto.

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

    
respondido por el Otto 05.07.2011 - 19:05
5

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

Puedes conectarte a esa función y anular el comportamiento predeterminado por el tuyo.

    
respondido por el mike23 05.07.2011 - 19:05

Lea otras preguntas en las etiquetas