こんにちは、@simon さん。ユーザーの役割が変更されたときに使用しているコードで問題が発生しています。
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
// ユーザーの役割が変更されたときに実行されるフック
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 {
// すべてのレベルグループを収集
$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', '');
// すべてのグループを1つの配列に結合
$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)
);
// 重複を削除
$s2member_level_groups = array_unique($s2member_level_groups);
// 収集したすべてのグループからユーザーを削除
foreach ($s2member_level_groups as $group) {
$result = DiscourseUtilities::remove_user_from_discourse_group($user_id, $group);
// 必要に応じて $result を処理できます
}
}
}
このコードの目的は、条件に基づいてユーザーを追加または削除することですが、どのような場合でも、フォーラム管理者に承認または拒否または削除が必要であるという通知が届きます。これは、else のケースでユーザーを特定のグループから削除したいだけなのに、管理者に新しいユーザーのレビュー通知が再び届くという状況で発生します。
もう1つのことは、ユーザーが WordPress ウェブサイトに登録すると、理由もわからずにこれらのグループ trust_level_0 と trust_level_1 に自動的に追加されることです。
助けていただけますか。ユーザー登録フックも共有できます。

