web-dev-qa-db-fra.com

Boucles et types de messages personnalisés

J'ai créé un CPT pour un site sur lequel je travaille actuellement, appelé "campagnes". J'ai créé une page qui affiche du contenu et une boucle personnalisée qui affiche la campagne la plus récente.

Partout ailleurs sur le site, j'ai utilisé Disqus pour les commentaires et j'aimerais utiliser Disqus ici - mais cela ne semble pas s'afficher. J'ai essayé de modifier le code des commentaires pour:

<?php $withcomments = "1"; comments_template(); ?>

mais je reçois le formulaire de commentaires habituel, plutôt que Disqus. Quelqu'un a une idée comment contourner cela?

Merci d'avance!

8-2-11 - J'ai trouvé une solution temporaire - écraser le fichier comments.php dans le thème avec le fichier de commentaires du plugin - mais cela signifie que les deux doivent être synchronisés. pourrait trouver une meilleure solution.

2
Andrew Parker

Enregistrez-vous votre CPT avec comments dans supports TABLEAU DE register_post_type() ?

En regardant brièvement le code du plugin Disqus, il y a dsq_comments_template() une fonction qui vérifie les éléments associés et renvoie vraisemblablement false si la prise en charge des commentaires n'est pas déclarée.

1
Rarst

C'est probablement stupide et je suis sûr que vous avez probablement vérifié cela à l'avance ... mais ça a marché pour moi. Il s'avère que mes utilisateurs ont décoché l'option "Autoriser les commentaires" dans beaucoup de mes publications personnalisées, et je ne l'ai pas vérifiée en premier.

Quoi qu'il en soit, pour résoudre ce problème, vous pouvez peut-être temporairement modifier le plug-in disqus dans le fichier 'disqus.php' autour de la ligne 671, vous trouverez la fonction dsq_comments_template($value), qui charge disqus au lieu des commentaires habituels.

Ce que j'ai fait était de vérifier les conditions dans lesquelles il ne charge pas , qui sont:

if ( !( is_singular() && ( have_comments() || 'open' == $post->comment_status ) ) ) {
    echo "sing?: ".is_singular()." have_comm?: ".have_comments().
            " open?:".$post->comment_status; // this was my modification ;)
    return;
}

if ( !dsq_is_installed() || !dsq_can_replace() ) {
    return $value;
}

quand j'ai réalisé que $post->comment_status était la condition qui l'a renvoyé, j'ai vérifié tous mes messages et me maudis de ne pas avoir vérifié les choses évidentes en premier. Quoi qu'il en soit, espérons que cela aide!

0
The WebMacheter