Je dois pouvoir faire en sorte que différents utilisateurs partagent la même adresse électronique. (L'exploitation d'un site sur lequel les parents créeront des comptes pour leurs enfants qui n'auront peut-être pas leur propre adresse électronique. Le parent devra donc utiliser la sienne pour chacun des comptes des enfants.)
J'ai vu d'autres suggestions, dont certaines incluent le noyau édité (ce que je ne veux pas faire), mais rien ne semble fonctionner.
Quelqu'un a-t-il une idée sur la manière de contourner le contrôle email_exists sur la création de l'utilisateur?
Merci d'avance.
P.S. Étant donné que je n'ai pas le représentant, je ne peux pas commenter sur l'autre message pour demander si le PO a trouvé une solution.
Malheureusement, ce n'est tout simplement pas possible. WordPress effectue cette vérification à trois occasions:
Les deux (1) et (2) ont des crochets après eux qui vous permettent de supprimer tout message d'erreur (ajouté à un objet WP_Error()
), et ainsi de contourner efficacement le contrôle.
Malheureusement, les deux (1) et (2) appellent (indirectement) wp_insert_user()
, et ainsi (3). (Il y a un peu de labyrinthe de wp_insert_user()
, wp_update_user()
et wp_create_user()
:))}
(3) est la pierre d'achoppement. En termes simples, vous ne pouvez pas vous en sortir.
Mais même si vous pourriez, il vaut probablement mieux ne pas le faire. Etant donné qu'un courrier électronique unique est largement attendu, vous utiliserez peut-être des plug-ins qui comptent sur ce fait. WordPress lui-même s'appuie sur ce fait lorsque vous utilisez la fonctionnalité 'mot de passe oublié'.
Cela vous laisse deux options:
Malheureusement, WordPress n'est pas conçu pour la gestion de la relation utilisateur ...
J'ai constaté qu'il est en fait possible d'ajouter un utilisateur avec un nouveau nom d'utilisateur mais une adresse électronique existante si vous appelez le code suivant:
define('WP_IMPORTING',true);
Cette constante est vérifiée dans wp-includes/user.php dans le codex.
Je suppose que cela est défini lorsque WordPress exécute l'une de ses propres importations de données, afin de contourner les erreurs causées par les adresses électroniques en double.
J'espère que cela pourra aider!
J'ai également étudié la question et essayé de trouver la meilleure solution pour une demande client.
Il existe plusieurs moyens pour y parvenir, tels que les courriels factices/factices et créer un champ de messagerie secondaire. Ce qui ne déclenchera pas l'exigence de messagerie unique de WP. Le nouveau champ peut simplement s'appeler "email2".
'email2' peut contenir toutes les informations souhaitées [limitées par la définition du champ MySQL]. Une fois créé, ajoutez le même courrier électronique aux deux comptes (ou plusieurs dans mon cas).
Ensuite, dans votre code, assurez-vous que les deux comptes sont mis en miroir pour les actions/déclencheurs/mises à jour, etc.
Par exemple, si le compte 1 a un message automatisé, et/ou une mise à jour de compte, etc ... Votre code pourrait faire référence à "mettre à jour tous les comptes où email2 = email2 du WP_user actuellement connecté".
C'est un contournement, mais devrait satisfaire la plupart des demandes des clients. Ils ne verront pas ce qui se passe dans le backend. Mais lorsqu'ils se connectent, ils doivent voir une vue "combinée" ou "en miroir" des deux comptes. Parce que, en substance, ils sont identiques aux exigences de messagerie et de nom d'utilisateur uniques de WP.
Vous pouvez même le faire avec des mots de passe. Vous ne pouvez pas "refléter" les mots de passe. Cependant, vous pouvez référencer et mettre à jour/définir le mot de passe de tous les comptes pour lesquels email2 = email2 de l'utilisateur actuellement connecté [mot_de_passe_wp].
De plus, il y a ce plugin WP [pas mon plugin FYI]:
https://wordpress.org/plugins/allow-multiple-accounts/
Si quelqu'un d'autre a d'autres solutions, réfléchissons et trouvons les meilleures solutions. Y a-t-il de meilleures solutions? #StackExchangeIsCool