Impossible d'ajouter l'utilisateur au groupe discourse

Salut, j’utilise le plugin wp discourse afin de synchroniser les utilisateurs entre le site Web WordPress et le formulaire de communauté discourse. J’utilise donc un code pour ajouter un utilisateur au groupe discourse lorsque l’utilisateur s’inscrit sur le site Web.

function mepr_capture_new_member_signup_completed($event) {
    $user = $event->get_data();
    $user_id = $user->ID;
    
    // Obtenir les données de l'utilisateur en fonction de l'ID de l'utilisateur
    $user_data = get_userdata($user_id);
	
    // Journaliser les informations de débogage sur les données de l'utilisateur
    log_debug_info("debug_log.txt", "Données utilisateur : ", print_r($user_data, true));

    // Vérifier si les données de l'utilisateur existent
    if ($user_data) {
        // Obtenir les rôles de l'utilisateur
        $roles = $user_data->roles;

        // Vérifier si l'utilisateur n'a pas le rôle « browns » ou s'il l'a
        if (!in_array('browns', $roles) || in_array('browns', $roles)) {
            // Supprimer tous les rôles existants
            foreach ($roles as $role) {
                $user_data->remove_role($role);
            }

			// Ajouter le rôle « browns »
			$user_data->add_role('browns');
			log_debug_info("debug_log.txt", "Rôle Browns attribué : ", print_r($user_data, true));

			if ( class_exists( '\\WPDiscourse\\Discourse\\Discourse' ) ) {
				// Ajouter l'utilisateur au groupe Discourse pour « browns »
				$s2member_level_1_groups = get_option('s2member_level_1_groups', '');
				log_debug_info("debug_log.txt", "Groupes de niveau 1 s2member : ", print_r($s2member_level_1_groups, true));

				// S'assurer que $s2member_level_1_groups n'est pas vide
				if (!empty($s2member_level_1_groups)) {
					$groups = explode(',', $s2member_level_1_groups);
					foreach ($groups as $group) {
						$group = trim($group); // Supprimer les espaces blancs des noms de groupe
						log_debug_info("debug_log.txt", "Tentative d'ajout de l'utilisateur au groupe Discourse : ", $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", "Échec de l'ajout au groupe Discourse : ", $error_message);
							log_debug_info("debug_log.txt", "Données d'erreur : ", print_r($result->get_error_data(), true));
						} else {
							log_debug_info("debug_log.txt", "Ajout réussi au groupe Discourse : ", $group);
						}
					}
				} else {
					log_debug_info("debug_log.txt", "Aucun groupe Discourse trouvé dans les paramètres.", "");
				}
			}

            // Paramètres SSO supplémentaires si nécessaire
            $sso_params = array();
            $sso_params = apply_filters('wpdc_sso_params', $sso_params, $user_data);

        } else {
            // Collecter tous les groupes de niveaux
            $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', '');

            // Combiner tous les groupes en un seul tableau
            $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)
            );

            // Supprimer les doublons
            $s2member_level_groups = array_unique($s2member_level_groups);

            // Supprimer l'utilisateur de tous les groupes collectés
            foreach ($s2member_level_groups as $group) {
                $group = trim($group); // Supprimer les espaces blancs des noms de groupe
                $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", "Échec de la suppression du groupe Discourse : ", $error_message);
                } else {
                    log_debug_info("debug_log.txt", "Supprimé avec succès du groupe Discourse : ", $group);
                }
            }
        }
    } else {
        // Gérer les cas où $user_id ou $role n'est pas fourni
        // Cela pourrait être journalisé ou géré différemment selon vos besoins
        // Pour l'instant, enregistrons un message
        error_log("ID utilisateur ou rôle non fourni dans user_registered_callback.");
    }
}

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

et voici la réponse que je reçois :

=== 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:  ===
Une réponse invalide a été retournée par 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:  ===
Une réponse invalide a été retournée par Discourse

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

et j’utilise également cette classe en haut du fichier functions.php

use WPDiscourse\Utilities\Utilities as DiscourseUtilities;

s’il vous plaît aidez-moi dans ce cas

Merci

Salut, peux-tu vérifier si la clé d’API est correcte et si le nom d’utilisateur de publication est un utilisateur administrateur ? :thinking:

Pouvez-vous me parler de la publication du nom d’utilisateur dans WordPress dans les paramètres de Discourse ou de l’emplacement de ce paramètre ? Et également, je ne publie pas d’articles de WordPress à Discourse.

Désolé pour la réponse tardive.

Votre fonction utilitaire WP Discourse repose sur la clé API et le nom d’utilisateur.
Les options se trouvent dans les paramètres généraux :

Vous devez fournir ici une clé API et un nom d’utilisateur valides ; le nom d’utilisateur doit être un administrateur.

Pouvez-vous vérifier si c’est le cas ?