Hola @simon, aquí tienes mi código que utilizo cuando cambia el rol de un usuario
use WPDiscourse\\Utilities\\Utilities as DiscourseUtilities;
// Hook para ejecutar cuando cambia el rol de un usuario
add_action('set_user_role', 'add_user_to_discourse_group_on_role_change', 10, 2);
function add_user_to_discourse_group_on_role_change($user_id, $role) {
// var_dump($role);
// die();
if ($role == 's2member_level1') {
$s2member_level_1_groups = get_option('s2member_level_1_groups', '');
// $group_names = array("haseeb-group", "moderators");
// $s2member_level_1_groups = implode(",", $group_names);
$result = DiscourseUtilities::add_user_to_discourse_group($user_id, $s2member_level_1_groups);
// var_dump($result);
// die();
// var_dump($result);
}
else if($role == 's2member_level2'){
$s2member_level_2_groups = get_option('s2member_level_2_groups', '');
$result = DiscourseUtilities::add_user_to_discourse_group($user_id, $s2member_level_2_groups);
}
else if($role == 's2member_level3'){
$s2member_level_3_groups = get_option('s2member_level_3_groups', '');
$result = DiscourseUtilities::add_user_to_discourse_group($user_id, $s2member_level_3_groups);
}
else if($role == 's2member_level4'){
$s2member_level_4_groups = get_option('s2member_level_4_groups', '');
$result = DiscourseUtilities::add_user_to_discourse_group($user_id, $s2member_level_4_groups);
}
else {
// Recopilar todos los grupos de nivel
$s2member_level_1_groups = get_option('s2member_level_1_groups', '');
$s2member_level_2_groups = get_option('s2member_level_2_groups', '');
$s2member_level_3_groups = get_option('s2member_level_3_groups', '');
$s2member_level_4_groups = get_option('s2member_level_4_groups', '');
// Combinar todos los grupos en un solo array
$s2member_level_groups = array_merge(
explode(',', $s2member_level_1_groups),
explode(',', $s2member_level_2_groups),
explode(',', $s2member_level_3_groups),
explode(',', $s2member_level_4_groups)
);
// Eliminar duplicados
$s2member_level_groups = array_unique($s2member_level_groups);
// Eliminar al usuario de todos los grupos recopilados
foreach ($s2member_level_groups as $group) {
$result = DiscourseUtilities::remove_user_from_discourse_group($user_id, $group);
// Puedes manejar $result según sea necesario
}
}
}
Ahora, el propósito del código es agregar o eliminar un usuario según una condición, pero en cualquier caso o condición, notifica a los administradores del foro que se necesita aprobar, rechazar o eliminar al usuario. ¿Por qué sucede esto en cualquier caso? Por ejemplo, en el caso else, solo quiero eliminar al usuario de un grupo específico, pero en ese caso, todavía aparece una notificación de “revisar nuevo usuario” para el administrador.
Una cosa más: cuando un usuario se registra en el sitio web de WordPress, se agrega automáticamente a estos grupos trust_level_0 y trust_level_1, no sé por qué.
Por favor, ayúdame, también puedo compartir contigo el hook de registro de usuarios.

