Plugin versucht nach jedem Update erneut auf Discourse zu veröffentlichen

Hallo,
Ich habe ein Problem auf unserer Website mit dem WP Discourse-Plugin bemerkt.
Grundsätzlich versucht das WP Discourse-Plugin, nachdem wir einen Blogbeitrag veröffentlicht haben und dieser erfolgreich im Discourse-Forum veröffentlicht wurde, nach etwa einer Woche, wenn wir eine kleine Änderung am Beitrag vornehmen und ihn aktualisieren, ihn erneut im Forum zu veröffentlichen.
Ich erhalte dann eine E-Mail „Discourse Publishing Failure“ mit der Meldung, dass die Einbettungs-URL bereits vergeben ist.

Ich habe dies auch bemerkt, wenn sehr alte Beiträge in WordPress aktualisiert werden. Sie erscheinen in der Standardkategorie „News“ des Discourse-Forums, was die Leser verwirrt.

Gibt es eine Einstellung, die ich übersehen habe, um dies zu vermeiden?
Vielen Dank!

Danke für den Bericht. Ich werde mir dieses Szenario bald genauer ansehen, hoffentlich morgen und spätestens Anfang nächster Woche.

2 „Gefällt mir“

Hallo @npm0912, könntest du bitte einen Test für mich machen?

Könntest du versuchen, dieses Problem zu reproduzieren, aber bevor du die Änderung vornimmst (nach einer Woche oder was auch immer die übliche Zeitspanne ist), überprüfe bitte den Status des Discourse-Posts in der Wordpress-Utility-Leiste auf der rechten Seite des Beitragsbearbeitungsbildschirms. Sag mir, was dort angezeigt wird, zu dem Zeitpunkt, an dem du die Bearbeitung vornimmst, und ob du dann nach der Bearbeitung das von dir beschriebene Verhalten erlebst.

Bitte teile mir auch einen Download deiner WP Discourse-Logs mit.

Wenn ich versuche, einen Beitrag zu bearbeiten, der vor etwa 10 Tagen veröffentlicht wurde, sehe ich diesen Discourse-Beitragsstatus:

Ich habe versucht, den Beitrag zu aktualisieren, und derselbe Fehler ist aufgetreten. Ich habe auch dieselbe E-Mail über das Scheitern erhalten.
Der letzte Fehler in den Protokollen lautet:

[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}

Sollte es auf der Einstellungsseite keine Option geben, die den erneuten Veröffentlichungsversuch deaktiviert, wenn der Beitrag bereits in Discourse vorhanden ist?

Danke!

Ok, das bedeutet, dass Ihre WordPress-Instanz dem WP Discourse-Plugin nicht erlaubt, Post-Meta-Felder korrekt zu speichern, höchstwahrscheinlich aufgrund eines anderen Plugins oder Themas auf Ihrer Website. Könnten Sie den WP Discourse-Log-Download teilen? Dieser enthält eine Liste von Plugins, die auf einen Schuldigen hindeuten könnten.

Normalerweise speichert das Plugin die Veröffentlichungsdetails nach der ersten Veröffentlichung. Das geschieht auf Ihrer Website nicht. Das müssen wir herausfinden :slight_smile:

Okay, das ist seltsam. Ich dachte, es wäre ein Fehler. Ich füge die Metadatendatei bei. Lassen Sie mich wissen, ob das ausreicht.

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

Lassen Sie mich wissen, ob es ein bekanntes Plugin gibt, das mit dem Discourse-Plugin in Konflikt geraten könnte.

Vielen Dank, dass Sie sich die Zeit nehmen, dies zu untersuchen!

Sie haben ein paar Plugins, die die Ursache sein könnten. Als erste Maßnahme könnten Sie bitte diese Einstellung in den “Publishing”-Einstellungen von WP Discourse aktivieren.

Dadurch ändert sich, wie das Plugin benutzerdefinierte Felder speichert, und dies könnte das Verhalten in Ihrem Fall beeinflussen. Es wird das Problem wahrscheinlich nicht beheben, aber es könnte uns mehr Einblick geben. Sobald Sie es aktiviert haben, versuchen Sie bitte, die gleichen Umstände zu reproduzieren.

Nachdem wir das versucht haben, werden wir einzelne Plugins deaktivieren, um zu sehen, ob wir das Problem isolieren können. Haben Sie zufällig eine Staging-Site (d. h. eine Site mit Ihren Themes und Plugins, aber ohne echte Daten)?

Ich werde auch weitere Protokollierungen in die Veröffentlichungslogik des Plugins einfügen, um diese Art von Problemen (d. h. die Speicherung von Metadaten in WordPress nach der Veröffentlichung in Discourse) zu beleuchten. Das wird jedoch etwas Zeit in Anspruch nehmen, und wir können in der Zwischenzeit einige Tests wie die oben genannten durchführen.

Hallo und nochmals vielen Dank für Ihre Zeit!

Ich habe diese Einstellung aktiviert, aber das Problem besteht weiterhin.
Wir verwenden tatsächlich eine Staging-Website, und das Lustige ist, dass sie sich anders verhält, obwohl die Plugins, Themes und Dateien exakt gleich sind – das heißt, nachdem ich einen Testbeitrag veröffentlicht habe, wird er korrekt in Discourse übernommen, und wenn ich dann zu demselben Beitrag zurückkehre, sehe ich den Fehler „Embed url has already been taken“ nicht in den Discourse-Sidebar-Einstellungen. Stattdessen sehe ich ihn so:

Die Serverunterschiede sind also:
Staging-Seite:
WordPress – 6.5.3
PHP – 8.1.27
MySQL – 10.6.16

Live-Seite:
WordPress – 6.5.3
PHP – 8.1.2-1ubuntu2.17
MySQL – 5.5.5

Hallo @npm0912, dies zeigt, dass das Problem mit Ihrer Umgebung zusammenhängt.

  1. Könnten Sie die vollständige „meta“-Datei aus dem WP Discourse-Protokollbetrachter von beiden Instanzen teilen?
  2. Was sind die Unterschiede zwischen dem Discourse, das Sie mit Staging verwenden, und dem, das Sie in der Produktion verwenden?
  3. Verwenden Sie in der WordPress-Produktion Caching-, CDN- oder Load-Balancing-Lösungen, die Sie im Staging nicht verwenden?

Hallo @angus,

  1. Sicher, hier sind die Protokolle:
    Staging:
    Staging wp-discourse-logs-metafile-2023-04-13-2024-05-28.txt (2,4 KB)
    Live-Seite:
    LIVE wp-discourse-logs-metafile-2024-05-13-2024-05-28.txt (2,4 KB)

  2. Die Discourse-Instanz ist dieselbe, der einzige Unterschied besteht darin, dass ich von Staging aus in einer anderen Forenkategorie poste.

  3. Ich verwende WP Rocket und Redis-Cache auf beiden Instanzen, daher gehe ich davon aus, dass dies keinen Einfluss hat.

Danke!

Es gibt einige geringfügige Unterschiede zwischen den beiden. Wahrscheinlich nicht die Ursache, aber es lohnt sich, Ihre Staging- und Produktions-Sites identisch zu halten, um die Möglichkeit auszuschließen, dass dies die Ursache ist, sowohl hier als auch für andere Probleme.

Davon abgesehen empfehle ich Ihnen, Ihre WP Rocket-Einstellungen genau zu überprüfen (z. B. sind sie auf beiden Websites tatsächlich gleich). Obwohl WP Rocket für seine speziellen Zwecke gut funktioniert, ist es oft die Ursache für Probleme mit WordPress-Plugins.

Beachten Sie, dass WordPress derzeit MySQL Version 8.0 oder höher benötigt. Sie müssen Ihre Produktionsdatenbank aktualisieren.

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

Tatsächlich hat WP Discourse die Informationen über die Datenbank falsch erhalten. Die korrekte Version der Datenbank ist 10.6.16-MariaDB-0ubuntu0.22.04.1.

Die in dieser Datei ausgegebene Version ist das Ergebnis einer Kernfunktion von Wordpress:

$wpdb->db_version()

Siehe hier im Code und weiterführend

Das ist, was Wordpress denkt, welche Version es verwendet. Das scheint Ihr Problem zu sein.

Sie haben Recht. Ich habe die Funktion db_version() im Theme erneut überprüft und tatsächlich 5.5.5 als Ergebnis erhalten. Auf der Backend-Seite „Website-Zustand“ sehe ich jedoch Version 10.6.16-MariaDB – dieselbe Version, die die Systemadministratoren erwähnt haben. Ich meine, das sollte auch die Version sein, die WP sieht, oder?

Es tut mir leid, aber hier könnten mehrere Dinge vorliegen, und es ist nicht wirklich möglich, dies mit Zuversicht zu sagen, ohne Ihren Server zu überprüfen.

Angesichts der von Ihnen gemeldeten Probleme würde ich vorschlagen, diesen Aspekt gründlich zu untersuchen.