web-dev-qa-db-fra.com

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

J'aimerais pouvoir utiliser des espaces dans les noms d'utilisateurs, mais cela ne semble pas possible. Y a-t-il une écriture dans le codex ou quelque part qui explique quels caractères sont autorisés et pourquoi il est limité à cet ensemble ou est-ce juste un alphas seulement et que ça craint?

Si je veux que les utilisateurs utilisent autre chose qu'un nom d'utilisateur sans espaces, ma seule véritable option est-elle un plug-in qui permet aux utilisateurs de se connecter avec leurs adresses électroniques, mais requiert toujours un nom d'utilisateur uniquement alpha lors de la création du compte?

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

11
Purcell

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

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

Cependant, WP ne passe pas par défaut en mode strict.

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

7
Otto

Je ne pense pas qu'il existe de documentation officielle à ce sujet, mais vous pouvez consulter la fonction sanitize_user 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.

5
mike23