Автоматическое добавление новых пользователей (из интеграции с WP) в группу

Да, именно этот пример отсутствует в теме, на которую я дал ссылку. Вы можете добавлять пользователей в группу в процессе входа через SSO, используя параметр SSO add_groups. По умолчанию плагин WP Discourse не отправляет этот параметр в полезной нагрузке SSO, но в плагине есть фильтр, который можно использовать для добавления этого параметра в полезную нагрузку SSO.

Следующий код, добавленный в файл functions.php вашей темы или в плагин, должен подойти. Таким образом вы можете добавлять пользователей сразу в несколько групп. Параметр add_groups принимает список названий групп, разделённых запятыми (без пробелов до или после запятых):

add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params' );
function wpdc_custom_sso_params( $params ) {
    $params['add_groups'] = 'your_group_name'; 

    return $params;
}

Если вы хотите добавлять в группу только определённых пользователей, функцию можно вызвать следующим образом:

add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params', 10, 2 );
function wpdc_custom_sso_params( $params, $user ) {
    if (/*добавьте здесь условие для проверки, нужно ли добавлять пользователя в группу */) {        
        $params['add_groups'] = 'your_group_name'; 
    }

    return $params;
}

Вы также можете удалять пользователей из групп с помощью параметра SSO remove_groups.

add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params' );
function wpdc_custom_sso_params( $params ) {
    $params['remove_groups'] = 'your_group_name'; 

    return $params;
}

или

add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params', 10, 2 );
function wpdc_custom_sso_params( $params, $user ) {
    if (/*добавьте здесь условие для проверки, нужно ли удалять пользователя из группы */) {        
        $params['remove_groups'] = 'your_group_name'; 
    }

    return $params;
}

Основной недостаток этого подхода по сравнению с использованием функции add_user_to_discourse_group, на которую я дал ссылку, заключается в том, что существующим пользователям необходимо выйти из системы, а затем снова войти в Discourse, чтобы их членство в группах было обновлено.