Nous gérons une adhésion via notre système Wordpress/Woocommerce. Nous utilisons Discourse sur un sous-domaine avec le SSO depuis quelques années et cela fonctionne très bien. J’ai du code dans mon fichier de fonctions qui ajoute/supprime l’accès aux groupes lorsque la personne adhère/annule respectivement.
Nous avons ajouté une fonctionnalité à notre adhésion où les gens peuvent rejoindre un petit groupe de 6 à 8 personnes pour des appels Zoom hebdomadaires.
Pour gérer cela, nous avons créé un type de publication Wordpress appelé « Cohortes » qui contient les informations sur les appels hebdomadaires, puis nous avons attribué ces Cohortes à un utilisateur en utilisant des champs utilisateur personnalisés.
Voici ce que j’aimerais faire :
Créer un groupe pour chacune des Cohortes.
Créer une sous-catégorie pour chacune des Cohortes auxquelles seul le groupe de #1 a accès.
Placer chacun des membres dans son groupe respectif, ce qui leur donnera accès à leur sous-catégorie pour leur cohorte.
Je sais comment faire le #3, mais existe-t-il un moyen d’ajouter par programmation des groupes et des sous-catégories (avec les paramètres de sécurité) ?
Je n’ai pas trouvé cette fonctionnalité dans les utilitaires WP-Discourse. De plus, en examinant l’API, je peux voir où ajouter des catégories, mais pas les fonctions de sécurité.
Oui, c’est possible. Vous pouvez faire n’importe quelle requête API à Discourse depuis WordPress en utilisant la méthode utilitaire discourse_request, c’est-à-dire
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
$args = array(
"body" => "",
"type" => "post"
);
$response = DiscourseUtilities::discourse_request( $path, $args );
Cela formatera correctement la requête et utilisera la clé API et l’utilisateur que vous avez fournis dans les paramètres de WP Discourse. Vous aurez besoin d’une clé globale pour les actions auxquelles vous faites référence (si vous utilisez également la même clé pour la fonctionnalité normale de wp discourse).
Notez que les « paramètres de sécurité » sont gérés via le paramètre permissions. Il vous suffit de lui donner un objet avec les noms de groupe comme clés et les entiers de niveau de permission comme valeurs, par exemple
@Angus, merci beaucoup ! C’était exactement ce dont j’avais besoin !
J’ai pu créer mes groupes, attribuer des utilisateurs aux groupes et créer les catégories avec la sécurité appropriée.
J’apprécie vraiment votre aide.
Cependant, j’ai une autre question… lorsque j’ai essayé d’exécuter une commande PUT pour mettre à jour une catégorie ou un groupe, j’obtiens cette erreur :
Erreur fatale : Appel non défini de la fonction Error: Call to undefined function wp_remote_put() in […]/public/wp-content/plugins/wp-discourse/lib/plugin-utilities.php:393
Voici mon code de test pour essayer de mettre à jour la catégorie ID 61 avec un nouveau nom :
Désolé Tim, je suis absent depuis quelques jours. Il semble que la méthode discourse_request doive être ajustée pour prendre en charge cela. Je ferai une PR pour cela la semaine prochaine et il faudra probablement une autre semaine pour qu’elle soit fusionnée.
Si vous le souhaitez plus tôt, vous pouvez utiliser les méthodes WP sous-jacentes comme ceci :
$api_credentials = DiscourseUtilities::get_api_credentials();
if ( is_wp_error( $api_credentials ) ) {
return $api_credentials;
}
$headers = array(
'Api-Key' => sanitize_key( $api_credentials['api_key'] ),
'Api-Username' => sanitize_text_field( $api_credentials['api_username'] ),
'Accept' => 'application/json',
);
$body = array( /* spécifique au point de terminaison que vous utilisez */ );
$url = /* L'URL absolue du point de terminaison que vous utilisez */ ;
$opts = array(
'headers' => $headers,
'body' => json_encode( $body ),
'method' => 'PUT'
);
$result = wp_remote_request( $url, $opts );
Salut @timgrahl, pourriez-vous partager une fonction fonctionnelle pour Wordpress avec Woocommerce pour ajouter/supprimer des utilisateurs aux groupes ?
J’utilise Woocommerce avec les adhésions et j’essaie de faire fonctionner ceci… si l’utilisateur Wordpress a une adhésion Woocommerce active, alors l’utilisateur sera ajouté au groupe X… lorsque l’adhésion est annulée ou expirée, l’utilisateur est retiré du groupe X.