Il link WP a Discourse non viene visualizzato quando si utilizza codice personalizzato

Ciao,

Ho un problema per cui sul lato WP non è disponibile alcun collegamento al forum Discourse. Solo alcune risposte agli argomenti del forum che ho trovato a riguardo:

  • Tutti i campi ‘Contenuto Testo’ sono compilati in WP admin → Sezione Plugin.
  • La sincronizzazione funziona; posso vedere i commenti su entrambi i lati.
  • La stringa URL è disponibile nella tabella del database _postmeta

image

La sezione commenti mi mostra Avvisi:

**Notice**: Trying to access array offset on value of type null in **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** on line **90**
**Notice**: Trying to access array offset on value of type null in **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** on line **106**
**Notice**: Trying to access array offset on value of type null in **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** on line **127**
**Notice**: Trying to access array offset on value of type null in **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** on line **127**
**Notice**: Trying to access array offset on value of type null in **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** on line **148**
**Notice**: Trying to access array offset on value of type null in **/home/u48255p44743/domains/fxweb.snowfreakz.nl/public_html/wp-content/plugins/wp-discourse/lib/discourse-comment-formatter.php** on line **148**

che sono tutti correlati a $URL nel file. Sto chiamando i commenti con:

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

Esempi di URL:
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 );

Inserendo la chiamata diretta qui sopra non mi restituisce alcun contenuto come link (l’ho trovato in un altro argomento)

Eseguo Apache / PHP7.4 / WP 6.0.2
Dopo alcune ore di risoluzione dei problemi, sono senza opzioni. Forse qualcuno ha un’idea!?
Grazie in anticipo,

Joep

Ciao Joep,

Se entrambe queste cose sono vere, allora c’è qualche altro problema (non WP Discourse) con il tuo sito.

È iniziato da poco? Cos’altro è cambiato di recente nella tua installazione di WP? Altri plugin, temi, caching, ecc.

Ciao Angus,

Grazie per avermi contattato… si tratta di un’installazione “fresca” di Wordpress che utilizza il template builder Bricks e ho appena installato WPdiscourse per la connessione. Oltre alla cache del server mod_headers, non ci sono altri plugin aggressivi che alterano script.

Ho appena aggiunto di nuovo la riga PHP diretta e… magicamente l’URL è lì. Non ho idea di cosa ho fatto di diverso.

<?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 );
?>

Ma ho ancora le Notifiche che si riferiscono alle righe di codice in cui l’URL dovrebbe essere costruito e il link dopo “Continua la discussione su” non viene visualizzato.

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

Joep

Ok. Perché stai caricando i commenti e il permalink usando il tuo codice personalizzato? Il plugin lo gestisce per te.

Ciao,

Quando includo i commenti “principali” di WordPress (che è un elemento del template di Bricks) viene visualizzato il “modulo commenti WP normale” che non viene sostituito dal plugin delle recensioni di Discourse. Vedi l’URL sopra; ho modificato il layout aggiungendo i commenti WP sotto il blog.

Impostazioni backend

Pertanto, ho aggiunto il codice manualmente poiché questo mostrava le recensioni e probabilmente sovrascrive qualsiasi incompatibilità del builder Bricks.

Joep

1 Mi Piace

Ok. Probabilmente c’è qualche problema di priorità di caricamento con il template builder che stai usando qui. Cercherò di ricrearlo domani. Stai comodo.

Posso inviarti il template builder come riferimento?

Ci saranno vari aggiornamenti alla funzione di utilità get_discourse_comments nella prossima release (2.4.6), che è attualmente in preparazione per il rilascio. La firma del metodo di utilità aggiornata sarà la seguente

/**
* Ottiene l'HTML del commento di Discourse in modo che possa essere visualizzato senza caricare il template dei commenti.
*
* @param int $post_id L'ID del post per cui visualizzare i commenti.
* @param bool $perform_sync Determina se viene eseguita una sincronizzazione dei commenti durante il caricamento dei commenti.
* @param bool $force_sync Determina se la cache di sincronizzazione dei commenti viene ignorata durante il caricamento dei commenti.
* @param string $comment_type Tipo di visualizzazione del commento.
*
* @return string
*/
public static function get_discourse_comments( $post_id, $perform_sync = true, $force_sync = false, $comment_type ) {

@Joep_Kannegieter Questo avrà alcuni vantaggi per il tuo caso (e per alcuni altri casi):

  • La visualizzazione dei commenti funzionerà
  • Controllerai il tipo di visualizzazione dei commenti (cioè tutti i commenti o il link al commento) programmaticamente
  • Controllerai la cache dei commenti programmaticamente

Vedi altro

1 Mi Piace

Grazie! Lo installerò e proverò. Riporterò i risultati.

Non è ancora stato rilasciato. Aspetta finché non vedi la versione 2.4.6 del plugin pronta per l’aggiornamento nel tuo pannello di amministrazione di Wordpress (ti avviserò anche qui).

Ciao Angus,

Tornando qui; in pratica “lo faccio funzionare” anche se non con il template di Bricks Builder.
Quando passo al tema twentytwenty, l’integrazione di Discourse appare sotto il post del blog, sostituendo il campo Commenti

Quando si utilizza Bricks Builder, c’è un elemento “Commenti” che carica i commenti di WP; che non viene sostituito dal plugin. Né chiamato programmaticamente con:

Chiamato programmaticamente, genera l’errore:

Errore: Argomenti insufficienti per la funzione WPDiscourse\Utilities\Utilities::get_discourse_comments(), 1 passato in /home/u43655p432443/domains/domain.nl/public_html/wp-content/themes/bricks/includes/elements/code.php(159) : eval()'d code on line 4 e esattamente 4 attesi

Quindi è correlato a Bricks. Chiederò anche alla community di Bricks.

Joep

Per ora uso solo PHP per richiamare i commenti nel template, usando

<?php comments_template(); ?>

Che salta l’elemento commenti di Bricks e usa il core di WP; questo funziona.

Joep

Questo errore ti sta dicendo che il tuo utilizzo della funzione di utilità get_discourse_comments necessita di un aggiornamento. Ecco un esempio di come potresti utilizzarla.

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