Вот основная идея. Я предполагаю, что вам нужно добавить какое-то условие в функцию, чтобы все пользователи не добавлялись в группу модераторов при смене их роли.
function add_user_to_discourse_group_on_role_change( $user_id, $role ) {
$sso_params = array(
'external_id' => $user_id,
'moderator' => 'true', // булевы значения 'true' и 'false' должны задаваться как строки!
'add_groups' => 'volunteers' // список через запятую, без пробелов после запятых
);
DiscourseUtilities::sync_sso_record( $sso_params );
}