Olá @simon, estou enfrentando um problema aqui está meu código que estou usando quando o cargo do usuário muda
use WPDiscourse\\Utilities\\Utilities as DiscourseUtilities;
// Hook para executar quando um cargo de usuário muda
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 {
// Coleta todos os grupos de nível
$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', '');
// Combina todos os grupos em um único 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)
);
// Remove duplicatas
$s2member_level_groups = array_unique($s2member_level_groups);
// Remove o usuário de todos os grupos coletados
foreach ($s2member_level_groups as $group) {
$result = DiscourseUtilities::remove_user_from_discourse_group($user_id, $group);
// Você pode lidar com $result conforme necessário
}
}
}
agora o propósito do código é adicionar ou remover o usuário com base na condição, mas em qualquer caso ou em qualquer condição, ele envia uma notificação aos administradores do fórum de que é necessário aprovar ou rejeitar ou excluir o usuário. Por que isso está acontecendo em qualquer caso, como no caso else, eu só quero remover o usuário de um grupo específico, mas nesse caso, ele novamente envia uma notificação de revisão de novo usuário para o administrador
mais uma coisa é que quando o usuário se registra no site do WordPress, ele é adicionado automaticamente a esses grupos trust_level_0 e trust_level_1, não sei por quê
por favor ajude e eu também posso compartilhar o hook de registro de usuário com você

