Adicionando automaticamente novos usuários (da integração WP) a um grupo

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.

5 curtidas