برنامج لتحديث الصورة الرمزية تلقائيًا في DiscourseConnect SSO

لدي كل شيء مُعد ويعمل، فإذا قام شخص ما بتغيير صورته الرمزية على موقع WordPress الخاص بي ثم قام بتسجيل الخروج من المنتدى وسجل الدخول مرة أخرى، فسيتم تحديث الصورة الرمزية على Discourse.

لكن الناس لا يعرفون أنه يجب عليهم تسجيل الخروج، وهذا مزعج للغاية، لذا أود أن أقوم بتشغيله بنفسي. لدي خطاف (hook) يتم تشغيله عندما يقوم شخص ما بتحديث صورته الرمزية. ما الذي يمكنني إضافته لإرسال الصورة الرمزية الجديدة مباشرة إلى 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 );
}

ستحتاج إلى معرفة عنوان URL للصورة الرمزية على ووردبريس (قد تجد هذا في وثائق Ultimate Member) وتعيينه للمتغير $avatar_url.

كان عليّ إضافة external_id' => $user_id, إلى المعلمات (params)

ولكن بخلاف ذلك، فقد نجح الأمر. شكرًا لك!

(ولكن الآن لدي مشكلة وهي أن الخطاف (hook) الذي تم تزويدي به يتم تشغيله قبل نقل الملف، لذا فإنه يحصل على الصورة الرمزية القديمة… ولكن هذا ليس خطأك :sweat_smile:)

إعجاب واحد (1)

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