Automatisch Discourse-Benutzer bei WordPress-Registrierung erstellen

Meine Website verwendet DiscourseConnect Provider, sodass WordPress die Logins bei Discourse verwaltet.

Wenn sich ein Benutzer bei WordPress registriert, möchte ich, dass sofort ein Discourse-Benutzer für ihn erstellt wird und die Discourse-Aktivierungs-E-Mail an ihn gesendet wird. Aber das scheint nicht zu passieren.

Ich habe den Punkt „Benutzerdaten synchronisieren“ in den WordPress-Einstellungen überprüft.

Es scheint, dass die Beschreibung besagt, dass ein Discourse-Benutzer erstellt wird, wenn sie sich bei WordPress anmelden. Aber ich sehe das nicht passieren. Der Discourse-Benutzer wird erst erstellt, wenn sie die Discourse-Website besuchen.

Funktioniert meine Integration nicht richtig? Oder missverstehe ich diese Beschreibung?

Danke!

Hallo @37Rb, das ist, was passiert.

Lassen Sie mich wissen, wenn Sie nach dem Ansehen des Videos weitere Fragen haben.

2 „Gefällt mir“

Ich verstehe jetzt. Es wird ein neuer Discourse-Benutzer erstellt, wenn sie sich bei WordPress „anmelden“. Es wird kein neuer Benutzer erstellt, wenn sie sich bei WordPress „registrieren“. Unsere Benutzer können sich selbst registrieren und sind nach der Registrierung sofort angemeldet. Zu diesem Zeitpunkt sind sie angemeldet, haben aber keinen Discourse-Benutzer.

Wenn sie sich von WP abmelden und wieder bei WP anmelden, wird ein Discourse-Benutzer erstellt. Ich habe das gerade überprüft.

Wir verlangen keine E-Mail-Verifizierung in WordPress, da es sich um eine WooCommerce-Seite handelt und diese sie automatisch registriert, wenn sie einen Kauf tätigen, während sie nicht angemeldet sind. Wenn sie Discourse zum ersten Mal nach der Registrierung besuchen, erhalten sie die E-Mail zur Adressüberprüfung von Discourse.

Die problematischen Benutzer sind diejenigen, die beides tun:

  • Sich bei WP registrieren, aber nicht abmelden und wieder anmelden
  • Niemals Discourse besuchen (was unsere Support-Seite für die E-Commerce-Site ist)

WordPress/WooCommerce behandelt die Selbstregistrierung als Anmeldung – sie gelten sofort nach der Registrierung als angemeldet. Gibt es eine Möglichkeit, dass ein Discourse-Benutzer erstellt wird, wenn sie sich selbst registrieren und nicht nur, wenn sie sich abmelden und wieder anmelden?

Hallo Ryan, du hast Recht, dass das Plugin nach dem Login einen Benutzer erstellt. Insbesondere verwendet das Plugin den wp_login-Hook. Es gibt auch einen user_register-Hook in WordPress, aber der Grund, warum das Plugin diesen nicht verwendet, ist, dass dieser sofort ausgelöst wird, nachdem ein Datensatz in die WordPress-Datenbank eingefügt wurde, unabhängig davon, ob seine Details (insbesondere seine E-Mail) verifiziert sind.

Um ein wenig frech zu sein, denke ich, dass die Frage hier vielleicht lautet, warum WooCommerce den wp_login-Hook nicht auslöst, wenn das der Fall ist :slight_smile: Aber hilfreicher ist, dass es wahrscheinlich einen anderen Hook oder Filter gibt, den WooCommerce sofort nach Registrierung und Login auslöst, wenn das tatsächlich der Fall ist.

Der Grund, warum wir dies (noch) nicht in das Plugin integriert haben, ist, dass es, wie Sie in Ihrem Fall vielleicht sehen, viele verschiedene Möglichkeiten gibt, wie Benutzer in WordPress erstellt/registriert/eingeloggt werden können.

Aber sehen wir zu, ob wir Ihren speziellen Fall zum Laufen bringen können. Zuerst müssen wir einen Hook finden, der sofort nach Ihrer Registrierung/Ihrem Auto-Login ausgelöst wird. Können Sie genau bestätigen, wie Sie das eingerichtet haben? D.h. Welchen Ablauf Sie genau verwenden. Je spezifischer, desto besser, z.B. jegliche Dokumentation, die Sie verwendet haben.

Ich vermute, dass WooCommerce die Verwirrung verursacht. Es sieht so aus, als ob das automatische Einloggen nach der Registrierung eine WooCommerce-Funktion ist, keine WordPress-Funktion. Und sie lösen absichtlich keine Login-Aktionen aus.

Ich kann nach einem geeigneten WooCommerce-Hook suchen, den ich verwenden kann. Gibt es eine WP Discourse-Funktion, die ich aufrufen oder einen Hook, den ich auslösen kann, um den Discourse-Benutzer zu erstellen, wenn ich den richtigen WooCommerce-Hook finde?

Ja, sobald Sie den richtigen Hook gefunden haben, können Sie den Benutzer wie folgt in Discourse erstellen:

$user = get_user_by( 'id', $user_id );
$params = WPDiscourse\\Utilities\\Utilities::get_sso_params( $user );
WPDiscourse\\Utilities\\Utilities::sync_sso_record( $params, $wp_user_id )

Ich gehe davon aus, dass Sie in diesem Kontext die user_id des neuen Benutzers haben.

2 „Gefällt mir“

Die Aktion woocommerce_created_customer scheint gut zu funktionieren.

Zusätzlich zum obigen Code ist es auch nützlich, die E-Mail-Adresse als verifiziert zu markieren.

delete_user_meta( $user_id, 'discourse_email_not_verified' );

Es funktioniert bisher. Danke für die Hilfe!!!

1 „Gefällt mir“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.