Да, именно этот пример отсутствует в теме, на которую я дал ссылку. Вы можете добавлять пользователей в группу в процессе входа через 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, чтобы их членство в группах было обновлено.