Ich habe ein Discourse-Skript verwendet und phpBB-Daten nach Discourse migriert. Jetzt habe ich meine Website nach WordPress verschoben und muss einige Benutzerdaten migrieren. Ich habe benutzerdefinierte Benutzerfelder in Discourse erstellt und diesen Hook “wpdc_sso_params” verwendet, um benutzerdefinierte Felddaten zu migrieren.
Das Problem ist jedoch, dass Daten synchronisiert werden, wenn sich ein Benutzer anmeldet. Wenn sich einige Benutzer nicht erneut anmelden oder abgelaufene Benutzerdaten auf diese Weise nicht migriert werden.
Gibt es einen Hook oder ein Skript, das alle Benutzerdaten auf einmal migrieren kann?
Eine andere Sache ist, dass wir benutzerdefinierte Felder zuordnen. Wie kann ich die Felder für vollständigen Namen sowie Vor- und Nachnamen zuordnen? So wie wir mit dem Hook “wpdc_sso_avatar_url” benutzerdefinierte Avatare festlegen können.
Wenn das WP Discourse-Plugin auf Ihrer WordPress-Site aktiviert ist, können Sie ein Skript schreiben, das alle Benutzer Ihrer Site durchläuft und die Funktion sync_sso_record mit den SSO-Parametern für jeden Benutzer aufruft, den Sie aktualisieren möchten:
Es ist schon eine Weile her, seit ich versucht habe, dies zu tun. Testen Sie es mit einem Benutzer, bevor Sie versuchen, alle Benutzer auf der Site zu durchlaufen.
Sie könnten das Discourse-Feld external_name für den vollständigen Namen verwenden. Der Name, den Sie mit dem Feld external_name festlegen, wird zum Namen des Benutzers in Discourse. Wenn Sie separate Felder für Vor- und Nachnamen benötigen, müssen Sie benutzerdefinierte Felder dafür in Discourse erstellen.
Lassen Sie mich wissen, wenn Sie dabei auf Schwierigkeiten stoßen. Ich kann versuchen, es morgen zu testen.
@simon
dies gibt mir einen fatalen Fehler bei der Verwendung von
WPDiscourse\Utilities\PublicPluginUtilities::sync_sso_record($sso_params_array, $myuser->ID);
PHP Fatal error: Uncaught Error: Call to undefined method WPDiscourse\Utilities\PublicPluginUtilities::sync_sso_record()
Das WP Discourse Plugin ist aktiv und SSO funktioniert einwandfrei.
Ich habe versucht:
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
DiscourseUtilities::sync_sso_record($sso_params, 3992);
Auf diese Weise gibt es keinen fatalen Fehler, aber die Daten der benutzerdefinierten Felder werden nicht in Discourse gespeichert.
Gibt diesen Fehler zurück:
WP_Error Object ( [errors] => Array ( [wpdc_response_error] => Array ( [0] => Eine ungültige Antwort wurde von Discourse zurückgegeben ) ) [error_data] => Array ( [wpdc_response_error] => Array ( [http_code] => 422 [http_body] => {“failed”:“FAILED”,“message”:“The external_id is required but was blank”} ) ) [additional_data:protected] => Array ( ) )
Jeder hier gibt sein Bestes, um Probleme zu lösen. Simon hilft dir und wird automatisch über Antworten benachrichtigt, es sei denn, er hat die Benachrichtigungen deaktiviert.
Daher ist es nicht nötig, ihn @zu erwähnen und ein Thema hochzuschieben, besonders nachdem du nur weniger als 3 Stunden gewartet hast. Bitte sei in dieser Hinsicht geduldig
Entschuldigung für den Fehler im Code, den ich geliefert habe. Ich habe den Code des Plugins falsch gelesen. Die Art und Weise, wie Sie die Funktion aufrufen, ist korrekt. Dies sollte auch funktionieren: