Le lien WP vers Discourse ne s'affiche pas lors de l'utilisation de code personnalisé

Salut,

J’ai un problème où du côté de WP, il n’y a pas de lien disponible vers le forum Discourse. Voici quelques réponses sur des sujets de forum que j’ai trouvés à ce sujet :

  • Tous les champs ‘Text Content’ sont remplis dans l’admin WP → section Plugin.
  • La synchronisation fonctionne ; je peux voir les commentaires des deux côtés.
  • La chaîne d’URL est disponible dans la table de base de données _postmeta

image

La section des commentaires m’affiche des Notices :

**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**

Qui sont toutes liées à la variable $URL dans le fichier. J’appelle les commentaires avec :

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

Exemples d’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 );

Placer l’appel direct ci-dessus ne me renvoie aucun contenu en tant que lien (trouvé dans un autre sujet)

Exécution d’Apache / PHP7.4 / WP 6.0.2
Après quelques heures de dépannage, je suis à court d’options. Quelqu’un a peut-être une idée !?
Merci d’avance,

Joep

Salut Joep,

Si ces deux éléments sont avérés, alors il y a un autre problème (non WP Discourse) avec votre site.

Est-ce que cela a commencé récemment ? Qu’est-ce d’autre a changé récemment sur votre installation WP ? D’autres plugins, thèmes, mise en cache, etc.

Salut Angus,

Merci de m’avoir contacté… il s’agit d’une installation Wordpress “fraîche” utilisant le constructeur de modèles Bricks et je viens d’installer WPdiscourse pour la connexion. Outre la mise en cache du serveur mod_headers, il n’y a pas d’autres plugins agressifs modifiant des scripts.

Je viens de rajouter la ligne PHP directe et… par magie, l’URL est là. Aucune idée de ce que j’ai fait différemment.

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

Mais j’ai toujours les Notifications qui concernent les lignes de code où l’URL devrait être construite et le lien après “Continuer la discussion sur” ne s’affiche pas.

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

Joep

Ok. Pourquoi chargez-vous les commentaires et le permalien en utilisant votre propre code personnalisé ? Le plugin s’en charge pour vous.

Salut,

Lorsque j’inclus les commentaires « main » de WordPress (qui est un élément de modèle Bricks), il affiche le « formulaire de commentaires WP normal » qui n’est pas remplacé par le plugin Discourse reviews. Voir l’URL ci-dessus ; j’ai modifié la mise en page en ajoutant les commentaires WP sous le blog.

Paramètres du backend

Par conséquent, j’ai ajouté le code manuellement car cela a montré les avis et remplace probablement toute incompatibilité avec le constructeur Bricks.

Joep

1 « J'aime »

Ok. Il y a probablement un problème de priorité de chargement avec le générateur de modèles que vous utilisez ici. J’essaierai de le recréer demain. Tenez bon.

Puis-je vous envoyer le générateur de modèles à titre de référence ?

Il y aura diverses mises à jour de la fonction utilitaire get_discourse_comments dans la prochaine version (2.4.6), qui est actuellement en cours de préparation. La signature de la méthode utilitaire mise à jour ressemblera à ceci

/**
* Obtenez le HTML du commentaire Discourse afin qu'il puisse être affiché sans charger le modèle de commentaire.
*
* @param int $post_id L'ID du message pour lequel afficher les commentaires.
* @param bool $perform_sync Détermine si une synchronisation des commentaires est éventuellement effectuée lors du chargement des commentaires.
* @param bool $force_sync Détermine si le cache de synchronisation des commentaires est contourné lors du chargement des commentaires.
* @param string $comment_type Type d'affichage du commentaire.
*
* @return string
*/
public static function get_discourse_comments( $post_id, $perform_sync = true, $force_sync = false, $comment_type ) {

@Joep_Kannegieter Cela aura quelques avantages pour votre cas (et quelques autres cas) :

  • L’affichage des commentaires fonctionnera
  • Vous contrôlerez le type d’affichage des commentaires (c’est-à-dire tous les commentaires ou le lien de commentaire) par programmation
  • Vous contrôlerez le cache des commentaires par programmation

Voir aussi

1 « J'aime »

Merci ! Je vais l’installer et l’essayer. Je vous ferai part des résultats.

Il n’est pas encore sorti. Attendez de voir la version 2.4.6 du plugin prête à être mise à jour dans votre panneau d’administration Wordpress (je vous notifierai ici aussi).

Salut Angus,

Pour revenir à ce sujet ; en gros, “ça fonctionne” bien que ce ne soit pas avec le modèle Bricks Builder.
Lorsque je passe au thème twentytwenty, l’intégration Discourse s’affiche sous l’article de blog, remplaçant le champ Commentaires

Lorsque j’utilise Bricks Builder, il y a un élément “Commentaires” qui charge les commentaires WP ; qui n’est pas remplacé par le plugin. Ni appelé par programme avec :

Appelé par programme, il génère l’erreur :

Erreur : Trop peu d’arguments pour la fonction WPDiscourse\Utilities\Utilities::get_discourse_comments(), 1 passé dans /home/u43655p432443/domains/domain.nl/public_html/wp-content/themes/bricks/includes/elements/code.php(159) : eval()'d code on line 4 et exactement 4 attendus

Donc, c’est lié à Bricks. Je vais aussi demander à la communauté Bricks.
Joep

Pour l’instant, j’utilise simplement PHP pour appeler les commentaires dans le modèle, en utilisant

comments_template();

Ce qui ignore l’élément de commentaires de Bricks et utilise le cœur de WP ; cela fonctionne.

Joep

Cette erreur vous indique que votre utilisation de la fonction utilitaire get_discourse_comments doit être mise à jour. Voici un exemple de la façon dont vous pourriez l’utiliser.

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