Où puis-je trouver de la documentation sur les caractères autorisés dans les noms d'utilisateur et pourquoi?

11

J'aimerais pouvoir utiliser des espaces dans les noms d'utilisateur, mais cela ne semble pas possible. Y a-t-il un résumé dans le codex ou quelque part qui explique quels caractères sont autorisés et pourquoi il a été restreint à cet ensemble ou est-ce uniquement des alphas et le suce-t-il?

Si je veux que les utilisateurs utilisent autre chose qu'un nom d'utilisateur sans espaces, ma seule véritable option est-elle un plugin qui permet aux utilisateurs de se connecter avec leur adresse e-mail à la place, mais nécessite toujours un nom d'utilisateur alpha uniquement lors de la création du compte?

Oh, et je suis sur un site WPMU / réseau.

Purcell
la source

Réponses:

7

Vous pouvez utiliser des espaces dans les noms d'utilisateur, pas de problème. Plusieurs utilisateurs de wordpress.org ont des espaces dans leurs noms d'utilisateur.

Le mode strict n'autorise que ces caractères: a-z0-9<space>_.\-@

Cependant WP n'est pas par défaut en mode strict.

Maintenant, le multisite a des restrictions différentes et il peut y supprimer des espaces. En effet, les noms d'utilisateur sont utilisés pour créer des blogs indépendants et autres sur des installations multisites.

Otto
la source
Cela a du sens, et pourtant mon installation multiple ne me permettra pas de créer des utilisateurs avec des espaces, @ ou. dans le nom. J'ai regardé formating.php et il semble autoriser @. et les espaces. Une idée d'où je devrais chercher pour comprendre ce qui empêche ces personnages? Je voudrais juste savoir pourquoi ils sont empêchés.
Purcell
3
C'est dans la fonction wpmu_validate_user_signup dans wp-includes / ms-functions.php, et oui, il n'autorise que les lettres et les chiffres. Certainement une chose multisite.
Otto
5

Je ne pense pas qu'il existe de documentation officielle à ce sujet, mais vous pouvez consulter la sanitize_userfonction dans 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 );
}

Vous pouvez vous connecter à cette fonction et remplacer le comportement par défaut par le vôtre.

mike23
la source
Merci d'avoir signalé formating.php. Ma multi-installation ne me permettra pas de créer des utilisateurs avec des espaces, @ ou. dans le nom. J'ai regardé formating.php et il semble autoriser @. et les espaces. Une idée d'où je devrais chercher pour comprendre ce qui empêche ces personnages? Je voudrais juste savoir pourquoi ils sont empêchés.
Purcell