DiscourseConnect SSO でアバター更新をプログラム的に強制する

WordPressサイトでアバターが設定されており、フォーラムからログアウトして再度ログインすると、Discourseのアバターが更新されるようになっています。

しかし、ユーザーはログアウトする必要があることを知らず、それが非常に煩わしいので、自分でトリガーしたいと思います。アバターが更新されたときに発火するフックがあります。新しいアバターをDiscourseに直接送信するために何を追加できますか?

@Shaunyさん、アバターの管理にはどのプラグインを使用していますか?また、どのように設定しましたか?

アバターにはUltimate Memberを使用しています。ユーザーがアバターをアップロードしたときにトリガーされる適切なフックを見つけました。あとはDiscourseに送信するだけです。

以下がアクションです。


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 ){
    // 何かを行う
}

承知いたしました。以下のような作業をご希望ということですね。

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のアバターURL
    $params = array(
        'external_id' => $user_id,
        'avatar_url' => $avatar_url,
        'avatar_force_update' => 'true'
     );
    DiscourseUtilities::sync_sso_record( $params, $user_id );
}

$avatar_url 変数には、WordPress(おそらくUltimate Memberのドキュメントで見つかるでしょう)のアバターURLを設定する必要があります。

パラメータに以下を追加する必要がありました。

'external_id' => $user_id,

それ以外は動作しました。ありがとうございます!

(ただし、現在、フックがファイルの移動前にトリガーされてしまい、古いアバターを取得してしまうという問題が発生しています。しかし、それはあなたのせいではありません😅)

「いいね!」 1

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