Aquí está la idea básica. Supongo que necesitarás agregar alguna condición a la función para que no se agregue a todos los usuarios al grupo de moderadores cuando cambie su rol.
function add_user_to_discourse_group_on_role_change( $user_id, $role ) {
$sso_params = array(
'external_id' => $user_id,
'moderator' => 'true', // ¡los booleanos 'true' y 'false' deben establecerse como cadenas!
'add_groups' => 'volunteers' // lista separada por comas, sin espacios después de las comas
);
DiscourseUtilities::sync_sso_record( $sso_params );
}