Ajouter des discussions liées au contenu à WordPress et aux sites statiques

Les discussions Flow ajoutent une arborescence de commentaires alimentée par le backend sans utiliser la base de données des commentaires WordPress. Elles fonctionnent sur les pages WordPress normales et sur les pages exportées par Static Publisher, car le navigateur lit et écrit les données de discussion via le backend Flow.

Une discussion comporte deux blocs coordonnés :

  • le Flow Form collecte les commentaires racine et les réponses, et détient la politique backend de référence ;
  • le bloc Flow Discussion liste les éléments publics et affiche les actions de réponse, d’édition et de suppression lorsque le visiteur courant a la permission.

L’ID du Form, la cible de contenu et le canal de discussion doivent correspondre.

Ajouter des discussions à chaque article

Pour un type de contenu, ajoutez les blocs Form et Discussion à son modèle Single au lieu de les copier dans chaque corps d’article individuel. Définissez la source cible sur Current WordPress content. Au runtime, Flow identifie chaque article comme :

wordpress / <post type> / <numeric post ID>

Chaque article obtient donc un fil séparé, tandis que les nouveaux articles héritent automatiquement de la même présentation et de la même politique.

Enregistrez le modèle ou la source du formulaire et confirmez que Backend Sync réussit avant de tester le frontend.

Configurer le Flow Form

Ouvrez Content binding and discussion sur le bloc Form et activez Discussion. Flow exige alors une conservation permanente des soumissions, un lien au contenu et une cible de contenu obligatoire.

Configurez la politique backend sur le Form :

  • Allow replies : désactivez cette option pour des commentaires racine sans réponses.
  • Maximum reply depth : de 1 à 5. Les commentaires racine ont une profondeur 0, donc 1 autorise un niveau de réponse directe.
  • Moderation : publication automatique ou mise en attente des nouveaux éléments pour modération.
  • Comment access : anonyme, connexion facultative, ou connexion obligatoire.
  • Allowed Cognito groups : restreint éventuellement les mutations aux membres de n’importe quel groupe listé.
  • Public author name source : un champ du formulaire ou des attributs Cognito vérifiés.
  • Public body field : le champ texte exposé comme corps du commentaire.
  • Discussion rating field : choisissez éventuellement un champ Rating pour les notes des commentaires racine et l’agrégation au niveau de la discussion. Les réponses ne contiennent pas de notes.
  • Fenêtre facultative d’édition par l’auteur, suppression par l’auteur et suppression par un modérateur.

La définition du Form est la source de vérité côté backend. Gardez alignés les paramètres d’accès et de groupes du bloc Discussion afin que ses actions frontend reflètent fidèlement cette politique.

Configurer le bloc Discussion

Form ID

Le Form ID sélectionne le formulaire backend synchronisé. Lorsqu’il est laissé vide, le rendu WordPress essaie d’utiliser l’ID de formulaire synchronisé stocké pour le contenu courant. Utilisez une valeur explicite lorsqu’un motif ou un modèle réutilisable ne peut pas hériter des bonnes métadonnées de formulaire.

Source cible

Source cibleIdentité utilisée pour le filUtilisation typique
Current WordPress contentwordpress / post type / post IDModèles d’articles uniques
Explicit content referenceespace de noms, type et ID rédigésentités externes ou détenues par l’application
Canonical page URLorigine et chemin canoniques sous la forme url / pagepages et exports stables liés à une URL

Le Form doit envoyer exactement la même cible que celle lue par le bloc Discussion. Une incohérence de cible ressemble généralement à une discussion valide mais vide.

Canal de discussion

Le canal relie les événements navigateur entre les instances Form et Discussion sur la page. Il détermine quel formulaire s’ouvre pour une réponse et quelle liste se rafraîchit après la soumission. Les canaux vides sont dérivés du Form ID et de la cible.

Un canal n’est pas une clé de partition backend. Modifier seulement le canal ne crée pas un second fil pour le même Form ID et la même cible de contenu.

Accès et groupes Cognito

  • Anonymous visitors : aucune identité n’est requise pour les mutations.
  • Visitors or signed-in users : les visiteurs anonymes sont acceptés lorsqu’aucune restriction de groupe n’est configurée ; les visiteurs connectés reçoivent les capacités du propriétaire.
  • Signed-in users only : les mutations de commentaire, réponse, édition et suppression requièrent un jeton d’accès Cognito vérifié, le cas échéant.

Les noms de groupe sont exacts et sensibles à la casse, et la correspondance avec n’importe quel groupe listé suffit. Avec une authentification facultative et une liste de groupes non vide, seuls les membres connectés de ces groupes peuvent commenter.

La lecture de la discussion est une politique séparée. Le GET public normal ne valide pas un jeton simplement parce qu’il est disponible. L’authentification n’est utilisée que pour un enrichissement facultatif des capacités ou pour des mutations protégées.

Pagination et aperçus

  • Root page size contrôle le nombre de commentaires racine récupérés par page : 1 à 50, 20 par défaut.
  • Reply page size contrôle le nombre de réponses directes récupérées pour un parent sélectionné : 1 à 50, 10 par défaut.
  • Reply preview count inclut 0 à 5 réponses directes avec chaque racine chargée initialement ; 0 désactive seulement les aperçus.

Le compteur d’en-tête est basé sur les racines chargées et leurs totaux descendants fournis par le backend. Si une autre page de racines existe, Flow ajoute +, donc il ne s’agit pas encore d’un total exact de toute la discussion.

Notes et filtres

Sélectionnez un Discussion rating field sur le Form pour publier les notes avec les commentaires racine. Flow utilise le nombre d’étoiles et le réglage de fraction du bloc Rating sélectionné, de sorte que les incréments par étoiles complètes, demi-étoiles et tiers d’étoile sont pris en charge sans arrondi. Pendant que le Form répond, il masque ce champ ; le backend empêche aussi les réponses de fournir des notes.

Le bloc Discussion peut afficher un résumé global avec :

  • le nombre de commentaires racine actuellement visibles et notés ;
  • leur moyenne dérivée ;
  • le nombre et le pourcentage de chaque bucket de note autorisé.

Il peut aussi permettre aux visiteurs d’afficher tous les commentaires racine, une note exacte, des notes au moins égales à une valeur choisie ou des notes au plus égales à une valeur choisie. Le filtre s’applique uniquement aux racines, tandis que les réponses restent attachées à leur parent. Le résumé décrit toujours la discussion complète, et pas seulement la page filtrée. Les auteurs peuvent masquer le résumé ou le filtre et peuvent configurer le filtre initial dans l’inspecteur.

Le backend stocke les comptages de buckets plutôt qu’une moyenne arrondie. La publication, la modération, le masquage/spam, la republication, les modifications de note du propriétaire, la suppression et la purge de confidentialité mettent à jour ces comptages dans la même transaction que le changement d’état du commentaire. La moyenne et les pourcentages sont calculés lors de la lecture de la discussion.

Libellés et dates

L’inspecteur peut remplacer le titre ; les textes de chargement, vide, erreur et nouvelle tentative ; les libellés d’auteur et de commentaire supprimé ; les libellés de réponse et de pagination ; les libellés de compteur ; et les textes de confirmation d’édition/suppression. Les libellés de compteur prennent en charge un emplacement {count}. Sinon Flow utilise ses chaînes AWS Amplify I18n localisées et la langue stockée dans Flow.

Les dates peuvent être masquées ou formatées avec les styles full, long, medium ou short. Le navigateur les formate avec la locale sélectionnée et son fuseau horaire local.

Exigences pour les sites statiques

Une page de discussion exportée a toujours besoin de :

  • les ressources frontend Flow et la configuration de bloc encodée ;
  • une URL backend Flow atteignable ;
  • l’origine exportée autorisée par la configuration backend/CORS ;
  • un Form ID et une référence de contenu stables.

Aucun point de terminaison de commentaires WordPress n’est requis. La lecture publique et la mutation authentifiée restent séparées, ce qui permet à une page statique d’afficher tous les commentaires publics tout en exigeant une connexion Cognito pour les ajouter ou les gérer.

Limites actuelles

  • La profondeur des réponses est limitée à cinq.
  • Désactivez Allow replies pour n’avoir aucune réponse ; une profondeur maximale de 1 autorise encore un niveau de réponse.
  • L’inspecteur n’expose pas encore la direction du tri ni les contrôles initiaux de profondeur de réponse.
  • Traitez le nombre d’étoiles et le réglage de fraction du champ de note sélectionné comme immuables après la publication des notes. Les buckets existants nécessitent une réconciliation explicite avant que cette configuration change.
  • Les réponses publiques transportent la politique de réponse non sensible du Form. Le frontend observe donc la même limite allowReplies et la même profondeur maximale pour les visiteurs anonymes et connectés.

Dépannage

  1. Vérifiez l’état de synchronisation backend du Form et l’ID de formulaire résolu.
  2. Comparez la source cible du Form et de Discussion ainsi que la référence de contenu résolue.
  3. Alignez leur canal, leur accès aux commentaires et leurs groupes Cognito.
  4. Traitez séparément les erreurs de lecture publique et les erreurs de permission de commentaire.
  5. Vérifiez l’état de modération des commentaires qui se sont soumis avec succès mais qui n’apparaissent pas.
  6. Pour les pages exportées, vérifiez les ressources Flow, l’URL backend, l’origine autorisée et la stabilité de l’URL canonique.