Ciao @simon, ho un problema. Ecco il codice che sto usando quando il ruolo di un utente cambia:
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
// Hook per eseguire quando un ruolo utente cambia
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 {
// Raccogli tutti i gruppi di livello
$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 tutti i gruppi in un unico 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)
);
// Rimuovi duplicati
$s2member_level_groups = array_unique($s2member_level_groups);
// Rimuovi l'utente da tutti i gruppi raccolti
foreach ($s2member_level_groups as $group) {
$result = DiscourseUtilities::remove_user_from_discourse_group($user_id, $group);
// Puoi gestire $result come necessario
}
}
}
Ora, lo scopo del codice è aggiungere o rimuovere un utente in base a una condizione, ma in qualsiasi caso o in qualsiasi condizione invia una notifica agli amministratori del forum che è necessario approvare, rifiutare o eliminare l’utente. Perché succede in ogni caso? Ad esempio, nel caso else voglio solo rimuovere l’utente da un gruppo specifico, ma in quel caso viene nuovamente inviata una notifica di revisione nuovo utente all’amministratore.
Un’altra cosa: quando un utente si registra sul sito WordPress, viene automaticamente aggiunto a questi gruppi trust_level_0 e trust_level_1, non so perché.
Per favore, aiutami. Posso anche condividere con te l’hook di registrazione dell’utente.

