Ich habe das alles eingerichtet und es funktioniert, sodass, wenn jemand seinen Avatar auf meiner WordPress-Seite ändert und sich dann vom Forum abmeldet und wieder anmeldet, der Avatar auf Discourse aktualisiert wird.
Aber die Leute wissen nicht, dass sie sich abmelden müssen, und das ist ziemlich ärgerlich, daher möchte ich es selbst auslösen. Ich habe einen Hook, der ausgelöst wird, wenn jemand seinen Avatar aktualisiert. Was kann ich hinzufügen, damit er den neuen Avatar direkt an Discourse sendet?
Ich verwende Ultimate Member für die Avatare, ich habe den richtigen Hook gefunden, der ausgelöst wird, sobald ein Benutzer einen hochlädt. Ich muss ihn dann nur noch an Discourse senden.
Hier ist die Aktion:
add_action("um_after_upload_db_meta_profile_photo","um_custom_after_upload_profile_photo", 10, 1 );
function um_custom_after_upload_profile_photo( $user_id ){
// etwas tun
}
use WPDiscourse\\Utilities\\Utilities as DiscourseUtilities;
add_action( "um_after_upload_db_meta_profile_photo", "um_custom_after_upload_profile_photo", 10, 1 );
function um_custom_after_upload_profile_photo( $user_id ){
$avatar_url = // Ultimate Member Avatar-URL
$params = array(
'external_id' => $user_id,
'avatar_url' => $avatar_url,
'avatar_force_update' => 'true'
);
DiscourseUtilities::sync_sso_record( $params, $user_id );
}
Sie müssen die URL für den Avatar unter WordPress ermitteln (vielleicht finden Sie diese in der Ultimate Member-Dokumentation) und diese der Variablen $avatar_url zuweisen.
(Allerdings habe ich jetzt das Problem, dass der Hook, den ich erhalten habe, bevor die Datei verschoben wird, ausgelöst wird, sodass er den alten Avatar erhält… aber das ist nicht deine Schuld )