WP-Link zurück zu Discourse wird bei Verwendung von benutzerdefiniertem Code nicht angezeigt

Hallo,

Ich habe ein Problem, bei dem auf der WP-Seite kein Link zum Discourse-Forum verfügbar ist. Hier sind einige Antworten auf Forenthemen, die ich dazu gefunden habe:

  • Alle Felder vom Typ „Textinhalt“ sind im WP-Admin → Plugin-Bereich ausgefüllt.
  • Die Synchronisierung läuft; ich kann die Kommentare auf beiden Seiten sehen.
  • Die URL-Zeichenfolge ist in der _postmeta-Datenbanktabelle verfügbar.

image

Der Kommentarbereich zeigt mir Hinweise:

**Hinweis**: Versuch, auf Array-Offset auf Wert vom Typ null zuzugreifen in **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** in Zeile **90**
**Hinweis**: Versuch, auf Array-Offset auf Wert vom Typ null zuzugreifen in **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** in Zeile **106**
**Hinweis**: Versuch, auf Array-Offset auf Wert vom Typ null zuzugreifen in **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** in Zeile **127**
**Hinweis**: Versuch, auf Array-Offset auf Wert vom Typ null zuzugreifen in **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** in Zeile **127**
**Hinweis**: Versuch, auf Array-Offset auf Wert vom Typ null zuzugreifen in **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** in Zeile **148**
**Hinweis**: Versuch, auf Array-Offset auf Wert vom Typ null zuzugreifen in **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** in Zeile **148**

Diese beziehen sich alle auf die $URL in der Datei. Ich rufe die Kommentare mit folgendem Code auf:

global $post;
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
$discourse_comments = DiscourseUtilities::get_discourse_comments($post->ID);
echo $discourse_comments;

Beispiel-URLs:
https://fxweb.snowfreakz.nl/nogmaals-een-test/
https://fxdisc.snowfreakz.nl/t/nogmaals-een-test/23/2

echo get_post_meta( $post->ID, 'discourse_permalink', true );

Wenn ich den obigen direkten Aufruf einfüge, erhalte ich keinen Inhalt als Link zurück (fand ich in einem anderen Thema).

Ich verwende Apache / PHP7.4 / WP 6.0.2
Nach einigen Stunden Fehlerbehebung gehen mir die Optionen aus. Vielleicht hat jemand eine Idee!?
Vielen Dank im Voraus,

Joep

Hallo Joep,

Wenn beides zutrifft, gibt es ein anderes Problem (nicht WP Discourse) mit deiner Website.

Hat dies erst kürzlich begonnen? Was hat sich kürzlich noch an deiner WP-Installation geändert? Andere Plugins, Themes, Caching usw.

Hallo Angus,

Danke für deine Nachricht … es ist eine “frische” WordPress-Installation, die den Bricks Template Builder verwendet, und ich habe gerade WPDiscourse für die Verbindung installiert. Abgesehen vom mod_headers Server-Caching gibt es keine anderen aggressiven Plugins, die Skripte verändern.

Ich habe gerade die direkte PHP-Zeile erneut hinzugefügt und … magischerweise ist die URL da. Keine Ahnung, was ich anders gemacht habe.

<?php
global $post;
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
$discourse_comments = DiscourseUtilities::get_discourse_comments($post->ID);
echo $discourse_comments;

echo get_post_meta( $post->ID, 'discourse_permalink', true );
?>

Aber ich habe immer noch die Hinweise, die sich auf Codezeilen beziehen, in denen die URL konstruiert werden sollte, und der Link nach “Continue the discussion at” wird nicht angezeigt.

https://fxweb.snowfreakz.nl/nogmaals-een-test/

Joep

Ok. Warum laden Sie die Kommentare und den Permalink mit Ihrem eigenen benutzerdefinierten Code? Das Plugin erledigt das für Sie.

Hallo,

Wenn ich die „main“-Kommentare von WordPress (ein Bricks-Vorlagenelement) einfüge, wird das „normale WP-Kommentarformular“ angezeigt, das nicht durch das Discourse-Bewertungs-Plugin ersetzt wird. Sehen Sie sich die obige URL an; ich habe das Layout geändert und die WP-Kommentare unter dem Blog hinzugefügt.

Backend-Einstellungen

Deshalb habe ich den Code manuell hinzugefügt, da dies die Bewertungen anzeigte und wahrscheinlich alle Inkompatibilitäten des Bricks-Builders überschreibt.

Joep

1 „Gefällt mir“

Ok. Wahrscheinlich gibt es ein Problem mit der Lade Priorität des Template Builders, den Sie hier verwenden. Ich werde versuchen, es morgen nachzubilden. Bleiben Sie dran.

Kann ich Ihnen den Template Builder zur Referenz schicken?

In der nächsten Version (2.4.6), die gerade für die Veröffentlichung vorbereitet wird, wird es verschiedene Aktualisierungen der Hilfsfunktion get_discourse_comments geben. Die aktualisierte Signatur der Hilfsmethode sieht wie folgt aus:

/**
* Ruft das Discourse-Kommentar-HTML ab, damit es angezeigt werden kann, ohne die Kommentarvorlage zu laden.
*
* @param int $post_id Die Beitrags-ID, für die die Kommentare angezeigt werden sollen.
* @param bool $perform_sync Bestimmt, ob beim Laden von Kommentaren möglicherweise eine Kommentarsynchronisierung durchgeführt wird.
* @param bool $force_sync Bestimmt, ob der Kommentar-Synchronisierungs-Cache beim Laden von Kommentaren umgangen wird.
* @param string $comment_type Art der Kommentar-Anzeige.
*
* @return string
*/
public static function get_discourse_comments( $post_id, $perform_sync = true, $force_sync = false, $comment_type ) {

@Joep_Kannegieter Dies wird einige Vorteile für Ihren Fall (und einige andere Fälle) haben:

  • Die Kommentar-Anzeige wird funktionieren
  • Sie steuern die Art der Kommentar-Anzeige (d. h. alle Kommentare oder Kommentar-Link) programmatisch
  • Sie steuern den Kommentar-Cache programmatisch

Siehe weiter

1 „Gefällt mir“

Danke! Werde es installieren und ausprobieren. Werde die Ergebnisse zurückmelden.

Es ist noch nicht veröffentlicht. Warten Sie, bis Sie Version 2.4.6 des Plugins in Ihrem Wordpress Admin-Panel zur Aktualisierung bereit sehen (ich werde Sie auch hier benachrichtigen).

Hallo Angus,

Ich komme darauf zurück; im Grunde „ich bekomme es zum Laufen“, wenn auch nicht mit der Bricks Builder-Vorlage.
Wenn ich zum Thema twentytwenty wechsle, wird die Discourse-Integration unter dem Blogbeitrag angezeigt und ersetzt das Kommentarfeld

Wenn ich Bricks Builder verwende, gibt es ein Element „Kommentare“, das die WP-Kommentare lädt; das nicht durch das Plugin ersetzt wird. Auch nicht programmatisch aufgerufen mit:

Programmatisch aufgerufen, wirft es den Fehler:

Fehler: Zu wenige Argumente für die Funktion WPDiscourse\Utilities\Utilities::get_discourse_comments(), 1 übergeben in /home/u43655p432443/domains/domain.nl/public_html/wp-content/themes/bricks/includes/elements/code.php(159) : eval()'d code on line 4 und genau 4 erwartet

Es hat also mit Bricks zu tun. Ich werde auch die Bricks-Community fragen.

Joep

Für den Moment verwende ich nur PHP, um die Kommentare in der Vorlage aufzurufen, mit

<?php comments_template(); ?>

Dies überspringt das Bricks-Kommentarelement und verwendet den Kern von WP; das funktioniert.

Joep

Dieser Fehler teilt Ihnen mit, dass Ihre Verwendung der Hilfsfunktion get_discourse_comments aktualisiert werden muss. Hier ist ein Beispiel, wie Sie sie verwenden könnten.

global $post;
use WPDiscourse\Utilities\Utilities as DiscourseUtilities;
$discourse_comments = DiscourseUtilities::get_discourse_comments($post->ID, true, true, 'display-comments');
echo $discourse_comments;