Comment Discourse remplace-t-il exactement les commentaires WP ?

Nous utilisons Discourse à la place des commentaires WordPress (l’option « Supprimer le modèle de commentaires WordPress » est cochée, ainsi qu’Ajax). J’ai configuré le contrôle d’accès Toolset sur un type de publication personnalisé qui publie sur Discourse (dans une catégorie privée correspondant au contrôle d’accès). Normalement, ce type de contrôle affecterait également la visibilité des commentaires de la publication, mais il n’affecte pas l’affichage des commentaires Discourse. Des idées ?

Je peux peut-être ajouter quelques précisions :

Nous avons un type de publication personnalisé privé sur notre site WordPress, dont les publications doivent être liées à des sujets dans une catégorie privée de Discourse. Les mêmes utilisateurs qui ont accès à la catégorie Discourse ont également accès aux publications sur WordPress. Nous gérons cela en assignant ces utilisateurs au rôle Éditeur sur WordPress, tandis que dans Discourse, ils appartiennent à un groupe qui leur donne accès à la catégorie privée.

En aucun cas, les utilisateurs non authentifiés ne doivent voir les publications sur WordPress ni les fils de discussion sur Discourse. Cela fonctionne comme prévu grâce aux contrôles d’accès par rôle et par groupe, respectivement. Côté WordPress, comme mentionné ci-dessus, nous utilisons Toolset Access pour restreindre l’accès à toutes les publications de ce type de publication personnalisé.

Cependant, les fils de discussion privés de Discourse s’affichent au public via l’intégration dans WordPress, même si le contenu de la publication lui-même est masqué. Autrement dit, les commentaires intégrés de Discourse ne sont pas masqués par les contrôles d’accès. Nous cherchons à comprendre ce qui pourrait placer cette sortie en dehors du cycle de contrôle et comment y remédier.

Le plugin WP Discourse affiche les commentaires en chargeant un modèle de commentaires personnalisé. Il utilise le filtre comments_template de WordPress pour charger ce modèle. Je ne suis pas sûr de comprendre pourquoi les commentaires se chargent toujours alors que vous avez configuré Toolset Access Control pour un type de publication. Je vais examiner ce qui se passe.

Je pense que le plugin devrait ajouter une option pour ne pas charger les commentaires pour les publications qui ont été publiées dans une catégorie Discourse privée. Une fois activée, seul un lien vers le sujet Discourse serait affiché. Je ne suis pas certain que cela résolve le problème auquel vous êtes confronté, cependant.

Bonjour Simon, je travaille sur ce sujet avec @Kayla. Ce que vous décrivez ici résoudrait notre problème.

Il serait également utile de savoir comment intégrer le modèle de commentaires Discourse dans notre contrôle d’accès plus granulaire. Merci !

Super ! Je ne pense pas qu’il y aura de problème pour intégrer cela dans la prochaine mise à jour du plugin. Je vais essayer de le faire d’ici la fin de la semaine. Je vous tiendrai informé des progrès à ce sujet.

Je pense que le problème que vous rencontrez est lié à la priorité avec laquelle WP Discourse s’attache au filtre comments_template de WordPress. Le plugin WP Discourse utilise une priorité de 20 pour appeler la fonction qui s’attache à ce filtre. Le plugin Toolset s’attache probablement à ce filtre avec une priorité inférieure pour empêcher le chargement du modèle de commentaires pour les pages protégées.

J’ai pris contact avec Toolset à ce sujet et je me suis trompé sur le comportement attendu. Le plugin Toolset Access ne s’accroche pas du tout au modèle de commentaires. Masquer les commentaires sur le contenu restreint nécessite un code personnalisé pour s’accrocher à leur filtre toolset_access_api_get_post_permissions afin de supprimer ou d’autoriser le rendu du modèle de commentaires au niveau du thème. Je m’excuse de ne pas avoir réalisé que leur restriction de contenu concerne littéralement le modèle de contenu lui-même. :woman_facepalming:

Cette option a été ajoutée au plugin dans la version 2.0.7. Elle est désormais disponible dans le dépôt WordPress.

Lorsque vous sélectionnez l’option « Activer les commentaires Discourse » du plugin, vous verrez maintenant trois options pour les types de commentaires :

Sélectionnez l’option « Afficher les commentaires pour les sujets publics » pour n’afficher les commentaires que pour les sujets situés dans des catégories Discourse publiques. Si un sujet est publié dans une catégorie privée, un lien vers le sujet et son nombre de commentaires sera affiché.

Si un sujet publié depuis WordPress vers Discourse est déplacé d’une catégorie publique vers une catégorie privée sur Discourse, les commentaires seront supprimés de WordPress et remplacés par un lien. Ce changement peut prendre jusqu’à 10 minutes car le plugin WP Discourse met en cache les données de commentaires renvoyées par Discourse. Vous pouvez vider le cache des catégories immédiatement en sélectionnant l’option « Forcer la mise à jour des catégories » dans la page des paramètres de publication du plugin, puis en enregistrant cette page de paramètres.

Pour permettre au plugin d’accéder aux permissions des catégories pour les sous-catégories Discourse, vous devez sélectionner l’option « Afficher les sous-catégories » dans l’onglet Paramètres de publication du plugin. Si cette option n’est pas activée et que l’option « Afficher les commentaires pour les sujets publics » est activée, toutes les sous-catégories sur Discourse seront considérées comme privées et un lien sera affiché à la place des commentaires.

Remarque : la reconnaissance par le plugin des modifications de catégorie effectuées directement sur Discourse n’est disponible que si votre site utilise une version récente de Discourse.

Pour contrôler programmatiquement quels utilisateurs voient les commentaires Discourse, vous pouvez complètement contourner le chargement des commentaires WP Discourse pour un utilisateur en utilisant le hook de filtre wpdc_load_comments_template_for_user. Ce hook reçoit trois arguments : $load_template (valeur par défaut true), $current_user et $post_id. Retournez false depuis une fonction accrochée à ce filtre pour empêcher le chargement des commentaires pour un utilisateur donné.

Les changements que je constate avec cette mise à jour sont les suivants : bien que discourse_replies_html se charge et s’affiche comme prévu, il semble échouer lors du chargement de discourse_no_replies_html (j’aperçois le lien textuel « Join Discussion Link: no Comments », mais pas notre modèle). De plus, si le post n’a pas été publié sur Discourse, un nouveau message apparaît : « Comments are not currently available for this post. ». Il s’agit de posts publics dans des catégories Discourse publiques.

Pour les posts publiés dans une catégorie Discourse privée, il semble que le formulaire de commentaires WP par défaut se charge. Aucun lien vers le sujet Discourse n’est présent.

L’option « Display comments for public topics » est activée, ainsi que « Display Subcategories ». J’ai mis à jour « Clear Cached Comment HTML » et effectué une « Force Category Update ». Aurais-je oublié quelque chose ?

Merci d’avoir signalé cela ! Le problème devrait être résolu dans WP Discourse version 2.0.8.

Je vais apporter quelques modifications au plugin plus tard aujourd’hui ou demain, ce qui devrait régler les autres problèmes que vous signalez. Le fait de ne pas pouvoir charger le modèle des commentaires WordPress pour les messages qui n’ont pas été publiés sur Discourse devait être corrigé immédiatement.

Voici ce que je vois lorsque je sélectionne l’option « Afficher les commentaires pour les sujets publics » et l’option « Afficher les commentaires WP existants », puis que je publie un article avec WordPress existant :

Du point de vue d’un utilisateur, cela ne semble pas très clair (cela pourrait être corrigé avec une personnalisation de WordPress), mais le lien vers les commentaires Discourse existe.

Si vous avez activé le paramètre de site « Cache Comment HTML », essayez de le désactiver. Ce paramètre ne devrait pas causer de problème, mais le décocher simplifiera le débogage.

Envoyez-moi tous les autres détails dont vous disposez sur le problème. Je publierai plus tard aujourd’hui une petite mise à jour du dépôt WordPress pour corriger un problème avec le bouton « Unlink Topic » qui se produit avec la version 5.5 de WordPress.

Nous sommes en version 2.1.1 avec WP 5.5. La mise en cache des commentaires n’est pas activée et nous n’utilisons pas les commentaires de WP (mais nous ne voyons plus le formulaire par défaut se charger, ce qui est une bonne chose).

Cependant, les modèles personnalisés se chargent parfois et parfois non. Nous sommes revenus à l’affichage des commentaires pour tous les articles, que le sujet Discourse soit privé ou non, mais cela n’a pas aidé. Je ne parviens pas à comprendre pourquoi, mais le problème semble persistant pour chaque article individuellement. Voici des exemples pour des articles publics dans des sujets publics :

Pas de commentaires, discourse_no_replies_html ne se charge pas :

Pas de commentaires, discourse_no_replies_html se charge :

A des commentaires, discourse_replies_html ne se charge pas :

A des commentaires, discourse_replies_html se charge :

Il est possible que le problème soit lié aux modèles personnalisés, mais il existe un autre rapport indiquant un problème où le modèle de commentaire ne se charge pas et que le lien du commentaire s’affiche à la place. Je n’ai pas réussi à reproduire le problème sur mon site de développement, mais je vais apporter une petite modification au plugin qui devrait résoudre le problème. Je l’aurai prêt dès demain matin. Merci pour votre patience !

Pouvez-vous essayer de mettre à jour le plugin vers la version 2.1.2 et me dire si cela résout le problème ?

Je peux confirmer que la mise à jour vers la version 2.1.2 a résolu le problème de chargement du modèle pour nous. Merci !