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

您需要找出 WordPress 上头像的 URL(也许可以在 Ultimate Member 文档中找到),并将其设置为变量 $avatar_url

我不得不在 params 中添加
'external_id' => $user_id,
但除此之外,它就能正常工作了。谢谢!

(不过我现在遇到的问题是,我收到的 hook 在文件移动之前触发,所以它获取的是旧的头像……但这不怪你 :sweat_smile:

1 个赞

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