Я думаю, что причиной исключения является то, что ваша функция my_wpdc_sso_client_updated_user не возвращает массив $updated_user. Этот массив необходим для продолжения работы функции, которая добавляет фильтр wpdc_sso_client_updated_user.
Вам также нужно установить ID пользователя 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.