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?
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).