您好 @simon,我在这里遇到了一个问题。这是我在用户角色更改时使用的代码:
use WPDiscourse\\Utilities\\Utilities as DiscourseUtilities;
// Hook to execute when a user role changes
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 {
// Collect all level groups
$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', '');
// Combine all groups into one 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 duplicates
$s2member_level_groups = array_unique($s2member_level_groups);
// Remove user from all collected groups
foreach ($s2member_level_groups as $group) {
$result = DiscourseUtilities::remove_user_from_discourse_group($user_id, $group);
// You may handle $result as needed
}
}
}
现在,这段代码的目的是根据条件添加或删除用户。但在任何情况下,它都会向论坛管理员发送通知,要求批准、拒绝或删除用户。为什么会这样?例如,在 else 情况中,我只想将用户从特定组中删除,但在该情况下,它再次向管理员发送了“需要审核新用户”的通知。
还有一件事是,当用户在 WordPress 网站上注册时,他们会自动添加到这些组 trust_level_0 和 trust_level_1,原因不明。
请帮忙,我也可以与您分享用户注册钩子。

