Sí, ese es el ejemplo que falta en el tema al que enlazo. Puedes agregar usuarios a un grupo como parte del proceso de inicio de sesión SSO utilizando el parámetro SSO add_groups. Por defecto, el plugin WP Discourse no envía este parámetro con la carga útil SSO, pero el plugin tiene un filtro que se puede usar para agregar este parámetro a la carga útil SSO.
El siguiente código, añadido al archivo functions.php de tu tema o a un plugin, debería funcionar para ti. De esta manera, puedes agregar usuarios a múltiples grupos. El parámetro add_groups acepta una lista separada por comas de nombres de grupos (sin espacios antes ni después de las comas):
add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params' );
function wpdc_custom_sso_params( $params ) {
$params['add_groups'] = 'nombre_de_tu_grupo';
return $params;
}
Si solo quisieras agregar usuarios específicos al grupo, podrías llamar a la función de la siguiente manera:
add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params', 10, 2 );
function wpdc_custom_sso_params( $params, $user ) {
if (/*agrega una condición aquí para verificar si el usuario debe ser agregado al grupo */) {
$params['add_groups'] = 'nombre_de_tu_grupo';
}
return $params;
}
También puedes eliminar usuarios de grupos con el parámetro SSO remove_groups.
add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params' );
function wpdc_custom_sso_params( $params ) {
$params['remove_groups'] = 'nombre_de_tu_grupo';
return $params;
}
o
add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params', 10, 2 );
function wpdc_custom_sso_params( $params, $user ) {
if (/*agrega una condición aquí para verificar si el usuario debe ser eliminado del grupo */) {
$params['remove_groups'] = 'nombre_de_tu_grupo';
}
return $params;
}
La principal desventaja de este enfoque en comparación con usar la función add_user_to_discourse_group a la que enlazo es que requiere que los usuarios existentes se cierren de sesión y luego vuelvan a iniciar sesión en Discourse para que se actualicen sus membresías a los grupos.