Sim, esse é o exemplo que está faltando no tópico ao qual fiz referência. Você pode adicionar usuários a um grupo como parte do processo de login SSO usando o parâmetro SSO add_groups. Por padrão, o plugin WP Discourse não envia esse parâmetro junto com a carga útil SSO, mas o plugin possui um filtro que pode ser usado para adicionar esse parâmetro à carga útil SSO.
O código a seguir, adicionado ao arquivo functions.php do seu tema ou a um plugin, deve funcionar para você. Dessa forma, você pode adicionar usuários a vários grupos. O parâmetro add_groups aceita uma lista de nomes de grupos separada por vírgulas (sem espaços antes ou depois das vírgulas):
add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params' );
function wpdc_custom_sso_params( $params ) {
$params['add_groups'] = 'seu_nome_de_grupo';
return $params;
}
Se você quiser adicionar apenas usuários específicos ao grupo, pode chamar a função assim:
add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params', 10, 2 );
function wpdc_custom_sso_params( $params, $user ) {
if (/*adicione uma condição aqui para verificar se o usuário deve ser adicionado ao grupo */) {
$params['add_groups'] = 'seu_nome_de_grupo';
}
return $params;
}
Você também pode remover usuários de grupos com o parâmetro SSO remove_groups.
add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params' );
function wpdc_custom_sso_params( $params ) {
$params['remove_groups'] = 'seu_nome_de_grupo';
return $params;
}
ou
add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params', 10, 2 );
function wpdc_custom_sso_params( $params, $user ) {
if (/*adicione uma condição aqui para verificar se o usuário deve ser removido do grupo */) {
$params['remove_groups'] = 'seu_nome_de_grupo';
}
return $params;
}
A principal desvantagem dessa abordagem, em comparação ao uso da função add_user_to_discourse_group que referenciei, é que ela exige que usuários existentes saiam e façam login novamente no Discourse para que suas associações a grupos sejam atualizadas.