Le plugin tente de republier sur Discourse après chaque mise à jour

Bonjour,
J’ai remarqué un problème sur notre site web avec le plugin WP Discourse.
En gros, après avoir publié un article de blog qui est publié avec succès sur le forum Discourse, disons après 1 semaine, si nous apportons une légère modification à l’article et que nous le mettons à jour, le plugin WP Discourse essaie de le publier à nouveau sur le forum.
Je reçois alors un e-mail « Échec de publication sur Discourse » indiquant que l’URL intégrée est déjà utilisée.

J’ai également remarqué cela lors de la mise à jour d’anciens articles sur WordPress, ils apparaissent dans la catégorie par défaut « Nouvelles » du forum Discourse, ce qui confond les lecteurs.

Y a-t-il un paramètre que j’ai oublié pour éviter cela ?
Merci beaucoup !

Merci pour le rapport. Je vais examiner ce scénario de plus près bientôt, j’espère demain, et au plus tard en début de semaine prochaine.

2 « J'aime »

Salut @npm0912, pourrais-tu faire un test pour moi ?

Pourrais-tu essayer de recréer ce problème, mais avant de faire le changement (après une semaine, ou quel que soit le délai normal), vérifie le statut du post Discourse dans la barre utilitaire de Wordpress sur la droite de l’écran d’édition du post. Dis-moi ce qui est affiché à l’endroit où tu effectues la modification, puis si tu obtiens le comportement que tu viens de décrire après la modification.

Merci de partager également avec moi un téléchargement de tes logs WP Discourse.

Lorsque j’essaie de modifier un article publié il y a environ 10 jours, je vois ce statut d’article Discourse :

J’ai essayé de mettre à jour l’article et la même erreur s’est produite. J’ai également reçu le même e-mail concernant l’échec.
La dernière erreur dans les logs est :

[2024-05-13 18:02:53] publish.ERROR: create_post.post_error {"wp_title":"Nextcloud exhibiting at global events in May 2024","wp_author_id":"9","wp_post_id":209030,"response_message":"Embed url has already been taken","http_code":422}

Ne devrait-il pas y avoir une option sur la page des paramètres qui désactive la tentative de republication lorsque l’article est déjà sur Discourse ?

Merci !

Ok, cela signifie que votre instance Wordpress ne permet pas au plugin WP Discourse de sauvegarder correctement les champs meta des articles, très probablement en raison d’un autre plugin ou thème sur votre site. Pourriez-vous partager le fichier de téléchargement du journal WP Discourse ? Il contiendra une liste des plugins, ce qui pourrait suggérer un coupable.

Normalement, ce qui se passe, c’est que le plugin enregistre les détails de publication après la première publication. Cela ne se produit pas sur votre site. C’est ce que nous devons découvrir :slight_smile:

ok, c’est bizarre… Je pensais que c’était un bug. J’attache le fichier de métadonnées. Dites-moi si cela suffit

wp-discourse-logs-metafile-2024-04-17-2024-05-13.txt (2,5 Ko)

Dites-moi s’il existe un plugin connu qui pourrait interférer avec le plugin Discourse.

Merci beaucoup d’avoir pris le temps d’enquêter sur cela !

Vous avez quelques plugins qui pourraient être à l’origine du problème. Dans un premier temps, pourriez-vous activer ce paramètre dans les réglages « Publication » de WP Discourse.

Cela modifie la façon dont le plugin enregistre les champs personnalisés et pourrait affecter le comportement dans votre cas. Cela ne résoudra probablement pas le problème, mais cela pourrait nous donner un meilleur aperçu. Une fois que vous l’aurez activé, veuillez essayer de recréer les mêmes circonstances.

Après cela, nous passerons à la désactivation des plugins individuels pour voir si nous pouvons isoler le problème. Avez-vous un site de staging par hasard (c’est-à-dire un site avec vos thèmes et plugins, mais sans données réelles) ?

Je vais également ajouter plus de journalisation à la logique de publication dans le plugin pour aider à éclaircir cette catégorie de problèmes (c’est-à-dire le stockage des métadonnées dans WordPress après la publication sur Discourse). Cela prendra un peu de temps, mais nous pouvons effectuer des tests comme ceux ci-dessus entre-temps.

Bonjour et merci encore pour votre temps !

J’ai activé ce paramètre, mais le problème persiste.
Nous utilisons en fait un site web de staging et le plus drôle, c’est que même si les plugins, thèmes et fichiers sont exactement les mêmes, il se comporte différemment - c’est-à-dire qu’après avoir publié un article de test, il apparaît correctement sur Discourse, puis si je reviens au même article, je ne vois pas l’erreur “Embed url has already been taken” dans les paramètres de la barre latérale de Discourse. Au lieu de cela, je le vois comme ceci :

Les différences de serveur sont donc :
Site de staging :
WordPress - 6.5.3
PHP - 8.1.27
MySQL - 10.6.16

Site en production :
WordPress - 6.5.3
PHP - 8.1.2-1ubuntu2.17
MySQL - 5.5.5

Salut @npm0912, ceci démontre que le problème vient de ton environnement.

  1. Pourrais-tu partager le fichier « meta » complet du visualiseur de logs WP Discourse des deux instances ?
  2. Quelles sont les différences entre le Discourse que tu utilises avec staging et celui que tu utilises en production ?
  3. Utilises-tu des solutions de mise en cache, de CDN ou d’équilibrage de charge dans la production WordPress que tu n’utilises pas en staging ?

Salut @angus,

  1. Bien sûr, voici les journaux :
    Staging :
    Staging wp-discourse-logs-metafile-2023-04-13-2024-05-28.txt (2,4 Ko)
    Site en production :
    LIVE wp-discourse-logs-metafile-2024-05-13-2024-05-28.txt (2,4 Ko)

  2. l’instance Discourse est la même, la seule différence étant que depuis le staging, je publie dans une autre catégorie de forum.

  3. J’utilise WP Rocket et le cache Redis sur les deux instances, donc je suppose que cela n’affecterait pas.

Merci !

Il y a quelques légères différences entre les deux. Probablement pas la cause, mais il est bon de garder vos sites de staging et de production identiques, pour éliminer la possibilité que ce soit la cause, tant ici que pour d’autres problèmes.

En dehors de cela, je vous recommande de vérifier attentivement vos paramètres WP Rocket (par exemple, sont-ils réellement identiques entre vos deux sites). Bien qu’il fonctionne bien pour ses objectifs particuliers, WP Rocket est souvent la cause de problèmes avec les plugins Wordpress.

Notez que WordPress nécessite actuellement la version 8.0 ou ultérieure de MySQL. Vous devez mettre à niveau votre base de données de production.

Renvoi : Could not update the meta value of discourse_post_id in database - #2 by angus

En fait, WP Discourse s’est trompé sur les informations de la base de données. La version correcte de la base de données est 10.6.16-MariaDB-0ubuntu0.22.04.1.

La version imprimée dans ce fichier est la sortie d’une fonction principale de Wordpress :

$wpdb->db_version()

Voir ici dans le code, et voir plus loin

C’est ce que Wordpress pense utiliser comme version. Cela semble être votre problème.

vous avez raison. J’ai vérifié à nouveau la fonction db_version() dans le thème et j’ai bien obtenu 5.5.5 comme résultat. Mais sur la page de « Santé du site » dans le backend, je vois la version 10.6.16-MariaDB - la même que celle mentionnée par les administrateurs système… Je veux dire que ce devrait aussi être la version que WP voit, n’est-ce pas ?

Désolé, mais il pourrait y avoir un certain nombre de problèmes et il n’est pas vraiment possible de le dire avec certitude sans examiner votre serveur.

Compte tenu des problèmes que vous avez signalés, je vous suggère d’enquêter minutieusement sur cet angle.