web-dev-qa-db-fra.com

Remplacer le tiret par un espace dans le nom d'utilisateur lors de la connexion

Tous mes utilisateurs ont des noms d'utilisateur qui suivent ce modèle: firstname-lastname (avec un tiret entre eux).

Cependant, je voudrais leur permettre de se connecter à WP (multisite) avec un espace au lieu d'un tiret.

Comment pourrais-je m'y prendre?

1
nprimex1

On dirait que vous pouvez, même si je n'ai jamais essayé. Après avoir fouillé dans wp-login.php et quelques autres fichiers, je me suis retrouvé dans la fonction et le filtre sanitize_user. Voici la description de la fonction de /wp-includes/formatting.php (à la ligne 888 au moment de l'écriture):

Supprime les balises, les octets, les entités et, si strict est activé, ne conserve que les caractères alphanumériques, _, espace,., -, @. Après la désinfection, il passe le nom d'utilisateur, le nom d'utilisateur brut (le nom d'utilisateur dans le paramètre) et la valeur de $ strict en tant que paramètres du filtre 'sanitize_user'.

Voici le filtre, la dernière ligne de la fonction:

apply_filters( 'sanitize_user', $username, $raw_username, $strict );

Donc, vous devez évidemment prendre soin de bien désinfecter le nom d'utilisateur (et devez probablement indiquer quand $strict est true), mais vous pouvez remplacer le nom d'utilisateur transmis à WordPress à partir du formulaire de connexion et d'autres formes (c'est-à-dire, soyez prudent et faites attention à quelque chose d'inattendu).

1
mrwweb