Agregar automáticamente nuevos usuarios (de la integración de WP) a un grupo

Disculpa si esto ya se ha preguntado antes, pero estoy buscando una forma de agregar automáticamente a los usuarios que fueron añadidos mediante la integración de WP (SSO) a un grupo de usuarios específico.

No pude encontrar documentación sobre cómo lograr esto, así que cualquier orientación sería muy apreciada :slight_smile:

Cuídate y hablamos pronto,

Alex

2 Me gusta

Asumo que estás utilizando el complemento WP Discourse para SSO. Ese complemento tiene algunas funciones que se pueden usar para gestionar la pertenencia a grupos de Discourse. Echa un vistazo a Manage group membership in Discourse with WP Discourse SSO para obtener detalles sobre cómo usar las funciones. Pronto actualizaré ese tema para agregar un ejemplo más general. Avísame si algo en el tema no está claro.

3 Me gusta

Hola Simon: sí, es correcto, estoy usando el complemento WP Discourse. Gracias por enlazar a este tema; estaré atento a la actualización, pero si puede servir de ayuda, el caso específico implica el uso de WooCommerce Memberships y Subscriptions. Dicho esto, tengo la intención de limitar los registros de usuarios solo a miembros de pago de todos modos, así que mientras sea un ejemplo general que pueda agregar a cada nuevo miembro a un grupo llamado todos (solo para dar contexto, el objetivo aquí es simplemente facilitar el envío de mensajes y la etiquetación de miembros en los anuncios en general).

¡Cuídate y hablamos pronto!

1 me gusta

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.

5 Me gusta

¡Genial, gracias Simon! Por curiosidad, ¿sería demasiado difícil incluir un ejemplo para WooCommerce Memberships?

Sería de gran ayuda si también eliminara automáticamente a las personas del grupo cuando ya no haya una suscripción activa de WooCommerce y las añadiera al grupo solo cuando la haya; de esa manera no sería necesario revisar manualmente nada y todo estaría completamente automatizado (cuando se cancelan y vuelven a activar los planes, etc.). Dado que los permisos en Discourse pueden limitarse para que solo las personas con una suscripción activa (y que estén en el grupo al que esto las añade) puedan ver o publicar…

Cualquier orientación que pueda transmitir a un desarrollador para que esto se implemente sería de gran ayuda.

Cuídate,

Alex

Debería ser posible eliminar automáticamente a los usuarios de un grupo de Discourse cuando su membresía de WooCommerce haya expirado. Para ello, utilizarías la función remove_user_from_discourse_group a la que enlacié.

No estoy lo suficientemente familiarizado con el plugin WooCommerce Memberships & Subscriptions como para saber qué ganchos de acción se ejecutan cuando se crea o cancela una membresía. Posiblemente otros miembros de la comunidad Meta sepan cómo hacerlo. También podrías crear un tema en nuestra categoría Marketplace para encontrar un desarrollador que te ayude con esto.

2 Me gusta

Muy bien, genial, gracias por esto, Simon. Lo investigaré y veré si puedo contratar a un desarrollador con experiencia en Discourse (y se lo pasaré). Hablando de eso, por curiosidad, ¿tienes una lista de expertos de confianza que puedas recomendar para este tipo de trabajo?

No tengo una lista de miembros de este foro que realicen integraciones entre WordPress y Discourse. Me gustaría saber qué desarrolladores de la comunidad Meta están interesados en trabajar con WordPress y Discourse.

No he recibido informes negativos sobre miembros de la comunidad relacionados con integraciones de WordPress. Si contratas a un desarrollador con historial en la comunidad, deberías estar seguro. Siempre estoy encantado de responder preguntas relacionadas con la creación de integraciones sobre el plugin WP Discourse. Los desarrolladores pueden enviarme un mensaje si se atascan en algo.

2 Me gusta

¡Genial, supongo que me pondré en contacto en algún momento! Podría terminar agrupando todos estos cambios en un pequeño complemento/extensión para el plugin WP Discourse, ya veremos. :slight_smile: