أعتقد أن سبب الاستثناء هو أن الدالة my_wpdc_sso_client_updated_user الخاصة بك لا تُرجع مصفوفة $updated_user. هذه المصفوفة مطلوبة للدالة التي تضيف عامل تصفية wpdc_sso_client_updated_user للاستمرار.
تحتاج أيضًا إلى تعيين معرف مستخدم WordPress الخاص بالمستخدم في استدعاء update_user_meta.
هذا يعمل، ولكنه يعطل وظيفة تغيير حجم الصور الخاصة بمكون Simple Local Avatars الإضافي:
add_filter( 'simple_local_avatars_dynamic_resize', '__return_false' ); // منع تغيير حجم الصور الرمزية
add_filter( 'wpdc_sso_client_updated_user', 'my_wpdc_sso_client_updated_user', 10, 2 );
function my_wpdc_sso_client_updated_user( $updated_user, $query ) {
if ( isset( $query['avatar_url'] ) ) {
$new_avatar_url = $query['avatar_url'];
$wp_user_id = $updated_user['ID'];
$avatar_data = array(
'full' => $new_avatar_url, // عنوان URL لصورة الرمزية الجديدة
);
update_user_meta( $wp_user_id, 'simple_local_avatar', $avatar_data );
}
return $updated_user;
}
السبب وراء منع تغيير حجم الصور الرمزية هو أن تغيير الحجم يتم باستخدام كود محرر صور WordPress. لكي يعمل، يجب تنزيل الصورة إلى WordPress. لاحظ أنه إذا حذفت سطر add_filter( 'simple_local_avatars_dynamic_resize', '__return_false' ) من الكود أعلاه، فسيحاول مكون Simple Local Avatars الإضافي تغيير حجم الصور، وسيطرح تحذير PHP، ثم يستخدم الصورة بالحجم الكامل - لذلك لن يبدو أن هناك أي شيء مكسور من وجهة نظر المستخدم.
أنا غير متأكد إلى حد ما بشأن دمج استخدام صور Discourse الرمزية مع مكون Simple Local Avatars الإضافي. المشكلة التي أراها هي أن المكون يمنح المستخدمين خيار تحميل صورة رمزية مخصصة على WordPress. إذا فعلوا ذلك، ثم قاموا بتسجيل الدخول مرة أخرى إلى WordPress من Discourse، فقد يتساءلون عما حدث للصورة الرمزية التي قاموا بتحميلها. سيكون تطويره أكثر تعقيدًا، ولكنه قد يكون من الأفضل إضافة القدرة على تعيين صورة Discourse الرمزية الخاصة بك عمدًا كصورة WordPress الرمزية الخاصة بك في صفحة ملف تعريف مستخدم WordPress.