Was ist das Problem mit meiner cURL-Anfrage?

Es gibt eine Hilfsfunktion in der Datei Utilities dafür:

DiscourseUtilities::sync_sso_record( $sso_params );

Gestern habe ich ein Beispiel gepostet, wie man sie benutzt: I cannot add user to the discouse forum from a wordpress website when user added in a membership - #10 by simon. Der knifflige Teil ist die Erstellung des Arrays für das Argument sso_params. Dieses Array muss das Feld external_id enthalten. Es wird auf die WordPress-ID des Benutzers gesetzt:

	$sso_params = array(
		'external_id' => $user_id,
	);

Sie können beliebige Felder aus dieser Liste in die Nutzlast aufnehmen: discourse/lib/discourse_connect_base.rb at 8f52fd1051e20fdff41321c5cff99fda05af86c1 · discourse/discourse · GitHub. Beachten Sie das Array BOOLS, das direkt unter der Liste ACCESSORS angezeigt wird, auf die ich verlinkt habe. Es gibt an, welche der möglichen Optionen booleans (true/false) sind. Bei Anfragen von WordPress müssen boolesche Felder mit den Zeichenketten 'true' oder 'false' und nicht mit den PHP-Werten true oder false gesetzt werden.

Um den Avatar zu aktualisieren, setzen Sie das Feld avatar_url im Array $sso_params und setzen Sie auch das Feld avatar_force_update auf 'true'.

Es gibt ein Feld bio, das zum Festlegen der Biografie verwendet werden kann.

Das WP Discourse-Plugin setzt bereits die Felder bio und avatar_url. Es hat auch eine Einstellung “Force Avatar Update” in seinen SSO-Einstellungen. Das Problem könnte sein, dass diese Einstellungen nur aktualisiert werden, wenn sich ein Benutzer über die WordPress-Website bei Discourse anmeldet. Die Funktion sync_sso_record aktualisiert die Felder sofort, ohne dass sich der Benutzer bei Discourse anmelden muss.

Wenn Sie außerdem feststellen, dass die Biografien der Benutzer nicht wie in Discourse festgelegt werden, könnte es daran liegen, dass sie auf Ihrer WordPress-Website, wo das Plugin sie erwartet, nicht festgelegt werden: wp-discourse/lib/plugin-utilities.php at 99325e15190f3a705284dbf582f1c4b2c0b21492 · discourse/wp-discourse · GitHub. Wenn Woocommerce ein anderes Feld für Biografien hat, könnten Sie auf dieses Feld zugreifen und es in einem Aufruf von sync_sso_record verwenden.

3 „Gefällt mir“