لا يمكن إضافة المستخدم إلى مجموعة discourse

مرحبًا، أنا أستخدم إضافة wp discourse لمزامنة المستخدمين بين موقع ووردبريس ومنتدى discourse. هنا أستخدم رمزًا لإضافة المستخدم إلى مجموعة discourse عند تسجيل المستخدم في الموقع.

function mepr_capture_new_member_signup_completed($event) {
    $user = $event->get_data();
    $user_id = $user->ID;
    
    // الحصول على بيانات المستخدم بناءً على معرف المستخدم
    $user_data = get_userdata($user_id);
	
    // تسجيل معلومات التصحيح حول بيانات المستخدم
    log_debug_info("debug_log.txt", "User Data: ", print_r($user_data, true));

    // التحقق مما إذا كانت بيانات المستخدم موجودة
    if ($user_data) {
        // الحصول على أدوار المستخدم
        $roles = $user_data->roles;

        // التحقق مما إذا كان المستخدم لا يمتلك دور "browns" أو يمتلكه
        if (!in_array('browns', $roles) || in_array('browns', $roles)) {
            // إزالة جميع الأدوار الموجودة
            foreach ($roles as $role) {
                $user_data->remove_role($role);
            }

			// إضافة دور "browns"
			$user_data->add_role('browns');
			log_debug_info("debug_log.txt", "Assigned Browns Role: ", print_r($user_data, true));

			if ( class_exists( '\\WPDiscourse\\Discourse\\Discourse' ) ) {
				// إضافة المستخدم إلى مجموعة Discourse لـ "browns"
				$s2member_level_1_groups = get_option('s2member_level_1_groups', '');
				log_debug_info("debug_log.txt", "s2member level 1 groups: ", print_r($s2member_level_1_groups, true));

				// التأكد من أن $s2member_level_1_groups ليست فارغة
				if (!empty($s2member_level_1_groups)) {
					$groups = explode(',', $s2member_level_1_groups);
					foreach ($groups as $group) {
						$group = trim($group); // إزالة المسافات البيضاء من أسماء المجموعات
						log_debug_info("debug_log.txt", "Attempting to add user to Discourse group: ", $group);
						
						$result = DiscourseUtilities::add_user_to_discourse_group($user_id, $group);
						
						if (is_wp_error($result)) {
							$error_message = $result->get_error_message();
							log_debug_info("debug_log.txt", "Failed to add to Discourse Group: ", $error_message);
							log_debug_info("debug_log.txt", "Error Data: ", print_r($result->get_error_data(), true));
						} else {
							log_debug_info("debug_log.txt", "Successfully added to Discourse Group: ", $group);
						}
					}
				} else {
					log_debug_info("debug_log.txt", "No Discourse groups found in settings.", "");
				}
			}

            // معلمات SSO إضافية إذا لزم الأمر
            $sso_params = array();
            $sso_params = apply_filters('wpdc_sso_params', $sso_params, $user_data);

        } 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', '');

            // دمج جميع المجموعات في مصفوفة واحدة
            $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) {
                $group = trim($group); // إزالة المسافات البيضاء من أسماء المجموعات
                $result = DiscourseUtilities::remove_user_from_discourse_group($user_id, $group);

                if (is_wp_error($result)) {
                    $error_message = $result->get_error_message();
                    log_debug_info("debug_log.txt", "Failed to remove from Discourse Group: ", $error_message);
                } else {
                    log_debug_info("debug_log.txt", "Successfully removed from Discourse Group: ", $group);
                }
            }
        }
    } else {
        // معالجة الحالات التي لا يتم فيها توفير معرف المستخدم أو الدور
        // يمكن تسجيل ذلك أو معالجته بشكل مختلف بناءً على متطلباتك
        // في الوقت الحالي، سنقوم بتسجيل رسالة
        error_log("User ID or role not provided in user_registered_callback.");
    }
}

add_action('mepr-event-member-signup-completed', 'mepr_capture_new_member_signup_completed');

وهذا هو الرد الذي أتلقاه:

=== User Data:  ===
WP_User Object
(
    [data] => stdClass Object
        (
            [ID] => 463
            [user_login] => sibahmed
            [user_pass] => $P$BqaZsm5xZuNLEt2oWmypNGQ1QRyoUU0
            [user_nicename] => sibahmed
            [user_email] => sibahmed82@gmail.com
            [user_url] => 
            [user_registered] => 2024-08-04 09:42:50
            [user_activation_key] => 
            [user_status] => 0
            [display_name] => sib ahmed
        )

    [ID] => 463
    [caps] => Array
        (
            [subscriber] => 1
            [browns] => 1
        )

    [cap_key] => wp_capabilities
    [roles] => Array
        (
            [0] => subscriber
            [1] => browns
        )

    [allcaps] => Array
        (
            [read] => 1
            [level_0] => 1
            [upload_files] => 1
            [access_s2member_level0] => 1
            [subscriber] => 1
            [browns] => 1
        )

    [filter] => 
    [site_id:WP_User:private] => 1
)


=== Assigned Browns Role:  ===
WP_User Object
(
    [data] => stdClass Object
        (
            [ID] => 463
            [user_login] => sibahmed
            [user_pass] => $P$BqaZsm5xZuNLEt2oWmypNGQ1QRyoUU0
            [user_nicename] => sibahmed
            [user_email] => sibahmed82@gmail.com
            [user_url] => 
            [user_registered] => 2024-08-04 09:42:50
            [user_activation_key] => 
            [user_status] => 0
            [display_name] => sib ahmed
            [user_level] => 0
        )

    [ID] => 463
    [caps] => Array
        (
            [browns] => 1
        )

    [cap_key] => wp_capabilities
    [roles] => Array
        (
            [0] => browns
        )

    [allcaps] => Array
        (
            [read] => 1
            [browns] => 1
        )

    [filter] => 
    [site_id:WP_User:private] => 1
)


=== s2member level 1 groups:  ===
Member,staff

=== Attempting to add user to Discourse group:  ===
Member

=== Failed to add to Discourse Group:  ===
An invalid response was returned from Discourse

=== Error Data:  ===
Array
(
    [http_code] => 404
    [http_body] => {"errors":["The requested URL or resource could not be found."],"error_type":"not_found"}
)


=== Attempting to add user to Discourse group:  ===
staff

=== Failed to add to Discourse Group:  ===
An invalid response was returned from Discourse

=== Error Data:  ===
Array
(
    [http_code] => 404
    [http_body] => {"errors":["The requested URL or resource could not be found."],"error_type":"not_found"}
)

وأنا أستخدم هذه الفئة في أعلى ملف functions.php

use WPDiscourse\Utilities\Utilities as DiscourseUtilities;

يرجى المساعدة في هذه الحالة.

شكرا لك.

مرحباً، هل يمكنك التحقق مما إذا كان مفتاح واجهة برمجة التطبيقات صحيحاً وأن اسم مستخدم النشر هو مستخدم مسؤول؟ :thinking:

هل يمكنك إخباري عن نشر اسم المستخدم في ووردبريس في إعدادات ديسكورس أو أين يوجد هذا الإعداد؟ وأيضًا، أنا لا أنشر مشاركات من ووردبريس إلى ديسكورس.

عذرًا على التأخر في الرد.

تعتمد وظيفة WP Discourse المساعدة لديك على مفتاح API واسم المستخدم.
توجد الخيارات في الإعدادات العامة:

يجب عليك توفير مفتاح API واسم مستخدم صالحين هنا؛ يجب أن يكون اسم المستخدم مسؤولاً.

هل يمكنك التحقق مما إذا كان هذا هو الحال؟