Hallo @simon, ich habe hier ein Problem mit meinem Code, den ich verwende, wenn sich die Benutzerrolle ändert.
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
// Hook, der ausgeführt wird, wenn sich eine Benutzerrolle ändert
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 {
// Sammle alle Level-Gruppen
$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', '');
// Kombiniere alle Gruppen zu einem 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)
);
// Entferne Duplikate
$s2member_level_groups = array_unique($s2member_level_groups);
// Entferne den Benutzer aus allen gesammelten Gruppen
foreach ($s2member_level_groups as $group) {
$result = DiscourseUtilities::remove_user_from_discourse_group($user_id, $group);
// Du kannst $result nach Bedarf behandeln
}
}
}
Der Zweck des Codes ist es, Benutzer basierend auf Bedingungen hinzuzufügen oder zu entfernen. In jedem Fall oder unter jeder Bedingung wird jedoch eine Benachrichtigung an die Administratoren des Forums gesendet, dass der Benutzer genehmigt, abgelehnt oder gelöscht werden muss. Warum passiert das in jedem Fall? Im else-Fall möchte ich den Benutzer nur aus einer bestimmten Gruppe entfernen, aber in diesem Fall wird dem Administrator immer noch eine Benachrichtigung zur Überprüfung neuer Benutzer angezeigt.
Eine weitere Sache ist, dass Benutzer, wenn sie sich auf der WordPress-Website registrieren, automatisch zu diesen Gruppen trust_level_0 und trust_level_1 hinzugefügt werden, warum weiß ich nicht.
Bitte helfen Sie mir, ich kann Ihnen auch den Benutzerregistrierungs-Hook mitteilen.

