Konfigurieren Sie WP Discourse, um Kommentare aus Discourse anzuzeigen

Sie können Discourse als Kommentarsystem für WordPress verwenden. Die Kommentarfunktionen sind von den Veröffentlichungsfunktionen abhängig, daher müssen Sie die Veröffentlichung eingerichtet haben, damit das Kommentieren funktioniert. Wenn Sie die Veröffentlichung eingerichtet haben und bereit sind, das Kommentieren einzurichten, sehen Sie sich dieses kurze Video an oder folgen Sie den nachstehenden Anweisungen.

Nächster Schritt

Nachdem Sie das Kommentieren eingerichtet haben, möchten Sie vielleicht die folgenden Themen überprüfen


Anweisungen

Kommentieren einrichten

Damit Discourse-Kommentare auf Ihrer WordPress-Website angezeigt werden, müssen Sie die Einstellung „Discourse-Kommentare aktivieren“ auswählen. Wenn diese aktiviert ist, sehen Sie zwei Optionen. Die Option „Kommentare anzeigen“ lädt eine Kommentarvorlage für jeden WordPress-Beitrag, der in Discourse veröffentlicht wurde. Diese Vorlage zeigt Discourse-Kommentare unter den WordPress-Beiträgen an. Die Option „Link zu den Kommentaren anzeigen“ lädt eine Kommentarvorlage, die einen Link zum zugehörigen Discourse-Thema unter den veröffentlichten Beiträgen anzeigt. Die Anzahl der Antworten auf das Thema wird im Link angezeigt, aber keine Antworten werden auf WordPress angezeigt.

Beide Kommentaroptionen laden Kommentarvorlagen für die WordPress-Beiträge. Das bedeutet, dass sie nur funktionieren, wenn Kommentare für den Beitrag aktiviert sind. Wenn Sie Kommentare für alle Beiträge aktivieren möchten, aber keine historischen WordPress-Kommentare für Beiträge anzeigen lassen möchten, die nicht in Discourse veröffentlicht wurden, aktivieren Sie die Einstellung „WordPress-Kommentarvorlage entfernen“.

Einstellungen

Hier sind kurze Beschreibungen, was die anderen Kommentar-Einstellungen bewirken. Wenn Sie sich bei einer der Einstellungen immer noch unsicher sind, antworten Sie auf dieses Thema und bitten Sie um weitere Klärung.

Kommentare mit Ajax laden

Diese Einstellung wird verwendet, um Kommentare vom WordPress-Client zu laden, anstatt sie vom Server zu laden. Dies ist nützlich, wenn die Seiten-Cache-Funktion das Laden neuer Kommentare auf Ihrer Website verhindert.

Kommentar-CSS laden

Diese Einstellung lädt eine Stylesheet, die Probleme mit Discourse Oneboxen und Zitaten behebt, wenn sie auf WordPress angezeigt werden.

Vorhandene WP-Kommentare anzeigen

Wählen Sie diese Einstellung, um auch vorhandene WordPress-Kommentare für Beiträge anzuzeigen, die auch in Discourse veröffentlicht wurden. Wählen Sie die Einstellung aus.

Überschrift für vorhandene Kommentare

Wenn Sie vorhandene Kommentare anzeigen, fügt diese Einstellung eine Überschrift über den WordPress-Kommentaren hinzu.

Einstellungen für selektiven Import

Es gibt eine Reihe von Einstellungen, die es Ihnen ermöglichen, Kommentare selektiv zu importieren. Diese sollten selbsterklärend sein. Die Standardwerte für jede dieser Einstellungen sind ein guter Ausgangspunkt, ändern Sie diese also nur, wenn Sie einen Grund dazu haben.

  • Maximale sichtbare Kommentare
  • Minimale Anzahl von Antworten
  • Mindestpunktzahl für Beiträge
  • Mindestvertrauensstufe
  • Vertrauensstufe-Punktzahl umgehen
  • Nur von Moderatoren gelikte importieren
Benutzerdefiniertes Datums-/Zeitformat

Diese Einstellung formatiert das Datum, das für jeden Discourse-Kommentar angezeigt wird, der auf Ihrer WordPress-Website erscheint. Beginnen Sie mit dem Standardwert. Wenn Sie das Datumsformat ändern möchten, klicken Sie auf den Link in der Beschreibung der Einstellung, um Details zu erfahren, wie Sie dies tun können.

Kommentar-HTML cachen

Diese Einstellung kann zur Verbesserung der Leistung verwendet werden. Das Caching des Kommentar-HTML reduziert die Anzahl der Anfragen an Discourse. Die zugehörige Einstellung „Gecachten Kommentar-HTML löschen“ sollte selbsterklärend sein.

Ausführliche Kommentarprotokolle

Wenn diese Option aktiviert ist, werden alle erfolgreichen Abrufe von Kommentaren aus Discourse protokolliert, zusätzlich zu Fehlern (Standard).

Webhook zum Synchronisieren von Kommentardaten

Das Aktivieren des Webhooks zum Synchronisieren von Kommentardaten im Einstellungsbereich „Webhooks“ kann die Anzahl der API-Anfragen von WordPress an Discourse erheblich reduzieren. Bevor Sie den Webhook aktivieren:

  1. Besuchen Sie die Discourse-URL, die in der Beschreibung der Einstellung angegeben ist (http://forum.example.com/admin/api/web_hooks).

  2. Klicken Sie auf die Schaltfläche „Neuer Webhook“ und füllen Sie das Formular aus.

    • Geben Sie im Feld „Payload URL“ die URL ein, die in der Beschreibung des WP Discourse-Feldes „Sync Comment Data“ angegeben ist. Sie wird etwa so aussehen, wobei Ihre WordPress-Website-URL verwendet wird: https://wp-discourse.dev/wp-json/wp-discourse/v1/update-topic-content.

    • Stellen Sie sicher, dass das Feld „Content Type“ auf application/json gesetzt ist.

    • Geben Sie im Eingabefeld „Secret“ eine Textzeichenfolge von mindestens 12 Zeichen ein. Kopieren Sie dann denselben Schlüssel in die WP Discourse-Einstellung „Webhook Secret Key“.

    • Stellen Sie im Feld „Welche Ereignisse sollen diesen Webhook auslösen?“ sicher, dass „Post Event“ ausgewählt ist.

    • Verwenden Sie das Feld „Ausgelöste Kategorien“, wenn Sie Beiträge nur aus WordPress in bestimmte Kategorien veröffentlichen. Auf diese Weise muss Ihre WordPress-Website keine Webhook-Anfragen für Themen verarbeiten, die keinen zugehörigen Discourse-Beitrag haben.

    • Lassen Sie die Einstellung „TLS-Zertifikat der Payload-URL prüfen“ aktiviert.

    Aktivieren Sie schließlich das Kontrollkästchen „Aktiv“ und klicken Sie auf „Erstellen“. Wenn der Webhook gespeichert wurde, klicken Sie auf die Schaltfläche „Zu Ereignissen“.

  3. Stellen Sie auf WordPress sicher, dass Sie das Webhook-Geheimnis von Discourse in das Feld „Webhook Secret Key“ eingegeben und die Webhook-Einstellung „Sync Comment Data“ aktiviert haben. Speichern Sie dann die Optionen.

Der Discourse-Webhook sollte jetzt funktionieren. Sie sollten ihn überprüfen, indem Sie auf die Schaltfläche „Ping“ des Webhooks in Discourse klicken (zu finden unter /admin/api/web_hooks/:webhook_id/events). Stellen Sie sicher, dass das Pingen des Webhooks einen Statuscode von 200 zurückgibt.

Anpassen des Kommentarzählungs-Synchronisierungszeitraums für WordPress-Archivseiten

Um die korrekte Anzahl von Discourse-Kommentaren für einen Beitrag zu erhalten, muss das Plugin periodisch eine HTTP-Anfrage an Discourse stellen, um die aktuelle Anzahl der Kommentare zu erhalten. Auf einzelnen Seiten ist dieser Zeitraum so eingestellt, dass er nicht öfter als alle 10 Minuten erfolgt. Für Archiv-Seiten ist der Zeitraum auf nicht mehr als einmal alle 24 Stunden eingestellt. Der Grund dafür ist, die Erstellung mehrerer Anfragen an Discourse bei jedem Zugriff auf eine Archivseite zu vermeiden.

Wenn Sie feststellen, dass das Plugin zu viele Anfragen an Discourse stellt, wenn die Archivseiten Ihrer Website angezeigt werden, können Sie den archive_page_sync_period anpassen, indem Sie den Filter 'discourse_archive_page_sync_period' verwenden. Dies tun Sie, indem Sie etwas wie das Folgende in die functions.php-Datei Ihres Themes einfügen:

add_filter( 'discourse_archive_page_sync_period', 'my_namespace_archive_page_sync_period' );
function my_namespace_archive_page_sync_period( $sync_period ) {
  // Dies ändert den Synchronisierungszeitraum für archivierte Beiträge auf einmal pro Woche.
  return WEEK_IN_SECONDS;
}

Wenn Sie feststellen, dass das Plugin nicht genügend Anfragen an Discourse stellt, um die aktuellen Kommentarzahlen für Archivseiten abzurufen, können Sie etwas wie das Folgende in die functions.php-Datei Ihres Themes einfügen. Dies setzt den archive_page_sync_period auf 10 Minuten.
Hinweis: Auf einer stark frequentierten Website kann dies eine hohe Belastung für Ihren Server bedeuten.

add_filter( 'discourse_archive_page_sync_period', 'my_namespace_archive_page_sync_period' );
function my_namespace_archive_page_sync_period( $sync_period ) {
  // Dies ändert den Synchronisierungszeitraum für archivierte Beiträge auf einmal pro Woche.
  return 10 * MINUTE_IN_SECONDS;
}

Kommentare anzeigen, ohne die WordPress-Kommentarvorlage zu laden

Das WP Discourse-Plugin verwendet die WordPress-Kommentarvorlage, um Discourse-Kommentare zu laden. Wenn Ihr Theme die Kommentarvorlage nicht lädt, können Sie Kommentare mit der statischen Hilfsfunktion get_discourse_comments anzeigen. Diese Funktion erfordert, dass Sie die ID des WordPress-Beitrags angeben, für den Sie Kommentare anzeigen möchten. Hier ist ein einfaches Beispiel für ihre Verwendung:

use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
$discourse_comments = DiscourseUtilities::get_discourse_comments(859);
echo $discourse_comments;

Kommentare werden auf die gleiche Weise angezeigt, wie sie angezeigt werden, wenn Sie die Option „Discourse-Kommentare anzeigen/Kommentare anzeigen“ auswählen (auf der Registerkarte „Kommentareinstellungen“ des Plugins). Wenn diese Funktion verwendet wird, wird der Wert dieser Einstellung ignoriert, aber alle anderen Kommentareinstellungen werden berücksichtigt.

Fehlerbehebung

Das häufigste Problem bei Discourse-Kommentaren ist, dass sie möglicherweise nicht sofort nach der Veröffentlichung des Beitrags in Discourse angezeigt werden. Diese Verzögerung ist beabsichtigt, da das Plugin versucht, die Anzahl der Anfragen an Discourse zu reduzieren. Eine Anfrage bei jedem Seitenaufruf verlangsamt Ihre Website. Wenn Sie keine sofort erscheinenden Kommentare sehen, warten Sie 10 Minuten, bevor Sie die Seite erneut aktualisieren.

Probleme mit der Kommentarzählung bei Anzeige von Discourse- und WordPress-Kommentaren

Das wp-discourse-Plugin verwendet den WordPress-Filter-Hook get_comments_number, damit die Anzahl der für einen Beitrag erstellten Discourse-Kommentare im gesamten Theme angezeigt werden kann. Dies führt zu einem Konflikt, wenn sowohl Discourse- als auch WordPress-Kommentare für einen Beitrag angezeigt werden. Das Plugin kann diesen Konflikt an den meisten Stellen lösen. Ein Ort, an dem er nicht gelöst werden kann, ist die Kommentartitelzeile, die WordPress-Themes oft am Anfang des Kommentarbereichs anzeigen. Dies ist der Abschnitt, der mit etwas wie „2 Gedanken zu…“ beginnt.

Der einfachste Weg, dies zu tun, ist das Hinzufügen einer Regel zu Ihrer Theme-CSS-Datei.

.discourse-comments-area ~ .comments-area .comments-title  {
	display: none;
}
8 „Gefällt mir“

@angus sehr guter Leitfaden und Video, danke für die Zusammenstellung. Wir haben das Plugin implementiert und stecken bei der Kommentarfunktion fest. Hier gibt es zwei Fragen/Probleme:

  • Wenn wir eine Antwort auf Discourse posten (an den geteilten Beitrag von WordPress), sehen wir, wie sich die Antwortanzahl in WordPress ändert, aber wir sehen keinen Kommentar…
  • Wir möchten die WordPress-Kommentare deaktivieren, damit Benutzer nur über Discourse antworten können, ist das möglich?

Hier ist, was wir sehen, diese ‘1’ Antwort stammt von Discourse, und Sie werden feststellen, dass die Antwort selbst nicht sichtbar ist:

CC: @Abdelrahman_MoHamed

Hallo @Jacob_Peebles,

Angenommen, Sie haben die obige Anleitung befolgt, sollten Sie als Nächstes Ihr Theme überprüfen. Verwenden Sie vielleicht ein Block-Theme? Wenn ja, siehe:

Yup, schalten Sie einfach die Kommentare in WordPress aus.

  1. Wählen Sie im Dashboard Einstellungen > Diskussion.
  2. Deaktivieren Sie das Kontrollkästchen neben Benutzern erlauben, Kommentare zu neuen Beiträgen zu posten.
  3. Klicken Sie auf Einstellungen speichern.
1 „Gefällt mir“

@angus – großartig, das hat wie am Schnürchen funktioniert! Ja, anscheinend sind wir beim „Block“-Editor. Sie können hier sehen, wie die Dinge funktionieren:

Der einzige seltsame Teil ist, dass die Stile/Schriftarten anscheinend nicht in die Diskussionskommentare übernommen werden. Ich bin mir nicht sicher, ob das nur ein Problem mit unserem Theme ist oder etwas, das man erwähnen sollte.

Danke nochmals.

Entschuldigung, hier ist auch ein Screenshot.

Es freut mich, dass es für dich funktioniert, Jacob.

Du musst deine eigenen Kommentarstile hinzufügen. Diskurskommentare sind standardmäßig absichtlich sehr leicht gestylt, da jedes Thema seinen eigenen Styling-Ansatz hat. In deinem Fall sollten einige grundlegende Stile wie diese ausreichen:

ol.comment-list {
    list-style: none;
    padding: 0;
}

img.avatar.photo.avatar-default {
    height: 40px;
    width: 40px;
}

.comment-author.vcard {
   display: flex;
   align-items: center;
   gap: 1em;
}

1 „Gefällt mir“

Ausgezeichnet @angus

Hallo @angus

Vielen Dank für das großartige Plugin und die hilfreichen Anweisungen!

Ich habe Discourse in meine Wordpress-Website integriert, und es ist verbunden.
Ich konnte einen Beitrag auf der WP-Seite erstellen und sehen, dass er als neues Thema in Discourse übernommen wurde, was großartig ist!

Es zeigt jedoch immer nur den ursprünglichen Beitragstext als Auszug (Hallo Welt usw.) in Discourse an, und es aktualisiert den Discourse-Themeninhalt nicht, nachdem ich ihn im WP-Beitrag geändert habe. Die Änderung des Inhalts wird nur angezeigt, wenn man auf „Vollständigen Beitrag anzeigen“ klickt, was bedeutet, dass ich die Einstellung nicht ändern kann, um den vollständigen Inhalt des Beitrags und nicht nur den Auszug anzuzeigen. Wenn ich das tue, verschwindet der Button aus dem Discourse-Thema und es wird nur der ursprüngliche Inhalt angezeigt, bevor er aktualisiert wurde. Ich weiß nicht, ob das verständlich ist?

Und dann erscheinen auch keine Kommentare, die von Discourse als Antworten auf das Thema gepostet wurden, unter dem Beitrag auf WP. Ich habe Kommentare aktiviert und verwende das Astra-Theme, also keinen Block-Editor. Ich bin mir nicht sicher, was ich tun sollte, um dies zu beheben.

Jeder Rat zu diesen 2 Punkten wäre sehr dankbar, danke!

Hallo @Clo, danke, dass du das Plugin ausprobiert hast. Könntest du mir deinen idealen Zustand für die Veröffentlichung erläutern? Versuche, ihn als „User Story“ darzulegen. Sind die WordPress-Kommentare auf deiner Website aktiviert?

Hallo @angus

Es sieht so aus, als ob die Kommentare endlich von der Discourse-Seite auf die WP-Seite übertragen wurden, es hat nur ziemlich lange gedauert. Vielen Dank!

Ich wollte jedoch auch fragen, ob es möglich ist, dass das Plugin einen neuen Beitrag in WP erstellt, wann immer ein neues Thema in Discourse erstellt wird? Oder ist es nur umgekehrt möglich?

Das ist nur mit zusätzlichen benutzerdefinierten Plugins auf der WordPress- und der Discourse-Seite möglich. Das WP Discourse-Plugin selbst ist nicht dafür ausgelegt.

Vielen Dank, das ist hilfreich.
Tolles Plugin!

1 „Gefällt mir“