it-swarm.com.de

Doppelte E-Mail-Adresse für verschiedene Benutzer zulassen

Ich muss in der Lage sein, dass verschiedene Benutzer dieselbe E-Mail-Adresse verwenden. (Betreiben einer Website, auf der Eltern Konten für ihre Kinder erstellen, die möglicherweise keine eigene E-Mail-Adresse haben. Daher müssen die Eltern ihre Konten für jedes der Kinderkonten verwenden.)

Ich habe andere Vorschläge gesehen, einige beinhalten einen bearbeiteten Kern (den ich nicht machen möchte), aber nichts scheint zu funktionieren.

Hat jemand eine Idee, wie man die Prüfung von email_exists bei der Benutzererstellung umgeht?

Danke im Voraus.

P.S. Da ich keinen Repräsentanten habe, kann ich den anderen Beitrag nicht kommentieren, um zu fragen, ob das OP eine Lösung gefunden hat.

4
mecnc

Dies ist leider nicht möglich. Es gibt drei Fälle, in denen WordPress diese Prüfung durchführt:

  1. Wenn Sie im Bearbeitungsbildschirm auf "Speichern" klicken ( https://github.com/WordPress/WordPress/blob/master/wp-admin/includes/user.php#L157 )
  2. Wenn ein Benutzer registriert ist ( https://github.com/WordPress/WordPress/blob/master/wp-includes/user.php#L2023 )
  3. Wenn ein Benutzer erstellt/in die Datenbank eingefügt wird ( https://github.com/WordPress/WordPress/blob/master/wp-includes/user.php#L1610 )

Nach (1) und (2) befinden sich Haken, mit denen Sie alle Fehlermeldungen (die einem WP_Error() -Objekt hinzugefügt wurden) entfernen und so die Prüfung effektiv umgehen können.

Leider rufen sowohl (1) als auch (2) (indirekt) wp_insert_user() auf und so (3). (Es gibt ein bisschen Labyrinth von wp_insert_user(), wp_update_user() und wp_create_user() :))

(3) ist der Stolperstein. Einfach gesagt, Sie können es nicht umgehen.

Aber selbst wenn Sie könnte, ist es wahrscheinlich am besten, nicht zu. Da eine eindeutige E-Mail weit verbreitet ist, verwenden Sie möglicherweise Plug-Ins, die sichauf diese Tatsache verlassen. WordPress selbst verlässt sich auf diese Tatsache, wenn Sie verwenden die Funktion "Passwort vergessen".

So haben Sie zwei Möglichkeiten:

  • Erstellen Sie eine gefälschte E-Mail-Adresse für untergeordnete Konten (Sie müssen jedoch sicherstellen, dass die E-Mail-Adresse gefälscht ist, da die E-Mail-Adresse gefälscht ist - verwenden Sie möglicherweise Ihre Domain?). Außerdem möchten Sie unbedingt sicherstellen, dass E-Mails, die mit solchen Konten verknüpft sind, nie verwendet werden.
  • Verlassen Sie den "Benutzer" -Ansatz und verwenden Sie so etwas wie ein CPT. Dies würde jedoch eine Menge Code umschreiben, von dem sich ein Teil auf die Benutzersicherheit bezieht (d. H. Anmelden, Speichern von Passwörtern usw.). Es ist nicht wirklich eine vernünftige Wahl.

Leider ist WordPress nicht für die Verwaltung von Benutzerbeziehungen ausgelegt ...

4
Stephen Harris

Ich habe festgestellt, dass es tatsächlich möglich ist, einen Benutzer mit einem neuen Benutzernamen, aber einer vorhandenen E-Mail-Adresse hinzuzufügen, wenn Sie zuerst den folgenden Code aufrufen:

define('WP_IMPORTING',true);

Diese Konstante wird in wp-includes/user.php im Codex überprüft.

Ich gehe davon aus, dass dies definiert wird, wenn WordPress einen eigenen Datenimport ausführt, um die durch doppelte E-Mail-Adressen verursachten Fehler zu umgehen.

Hoffentlich hilft das!

1
Robert Peake

Ich habe mich auch mit diesem Problem befasst und versucht, die beste Lösung für eine Kundenanfrage zu finden.

Es gibt verschiedene Möglichkeiten, dies zu erreichen, z. B. die Dummy-/Fake-E-Mails, und ein sekundäres E-Mail-Feld zu erstellen. Wodurch die eindeutige E-Mail-Anforderung von WP nicht ausgelöst wird. Das neue Feld kann einfach mit "email2" beschriftet werden.

'email2' kann beliebige Informationen enthalten [begrenzt durch die MySQL-Felddefinition]. Sobald es erstellt ist, fügen Sie die gleiche E-Mail über beide Konten (oder mehrere in meinem Fall).

Stellen Sie dann in Ihrem Code sicher, dass beide Konten für Aktionen/Trigger/Updates usw. gespiegelt sind.

Wenn Konto 1 beispielsweise eine automatische Nachricht und/oder eine Kontoaktualisierung usw. enthält, könnte Ihr Code auf "Alle Konten aktualisieren, bei denen E-Mail2 = E-Mail2 des aktuell angemeldeten WP_Benutzers" verweisen.

Es ist ein Workaround, sollte aber die meisten Kundenwünsche erfüllen. Sie werden nicht sehen, was im Backend los ist. Bei der Anmeldung sollte jedoch eine kombinierte oder gespiegelte Ansicht beider Konten angezeigt werden. Weil sie im Wesentlichen dieselben sind wie die eindeutigen E-Mail- und Benutzernamenanforderungen von WP.

Sie können dies sogar mit Passwörtern tun. Sie können die Passwörter nicht "spiegeln". Sie können jedoch auf alle Konten verweisen, bei denen email2 = email2 des aktuell angemeldeten Benutzers [wp_set_password] ist, und das Kennwort aktualisieren/festlegen.

Es gibt auch dieses WP Plugin [nicht mein Plugin FYI]:

https://wordpress.org/plugins/allow-multiple-accounts/

Wenn irgendjemand andere Lösungen hat, lasst uns ein Brainstorming durchführen und die besten Lösungen finden. Gibt es bessere Lösungen? #StackExchangeIsCool

0
John Pedersen