web-dev-qa-db-fra.com

Comment ajouter le nombre de commentaires Disqus

Je dois être aveugle mais je ne trouve pas pour moi les instructions complètes pour que les commentaires de Disqus fonctionnent.

Tout ce que je veux, c'est juste le nombre de commentaires.

J'ai coché l'option "Output JavaScript in footer". J'ai des boucles personnalisées, mais je n'ai aucune idée de ce que je suis censé y insérer pour activer le décompte des commentaires.

Mon fichier loop.php est:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <?php if ( comments_open() ) : ?>
        <a href="<?php echo get_permalink($post->ID); ?>#disqus_thread" class="post-disqus">
           <span class="dsq-postid"></span>
           <?php echo $post->comment_count; ?>
        </a>
    <?php endif; ?>
<?php endwhile; ?>
<?php endif; ?>

Le code javascript du pied de page de Disqus est:

<script type="text/javascript">
    // <![CDATA[
        var disqus_shortname = 'mysite';
        var disqus_domain = 'disqus.com';
        (function () {
            var nodes = document.getElementsByTagName('span');
            for (var i = 0, url; i < nodes.length; i++) {
                if (nodes[i].className.indexOf('dsq-postid') != -1) {
                    nodes[i].parentNode.setAttribute('data-disqus-identifier', nodes[i].getAttribute('rel'));
                    url = nodes[i].parentNode.href.split('#', 1);
                    if (url.length == 1) url = url[0];
                    else url = url[1]
                    nodes[i].parentNode.href = url + '#disqus_thread';
                }
            }
            var s = document.createElement('script'); s.async = true;
            s.type = 'text/javascript';
            s.src = 'http://' + disqus_domain + '/forums/' + disqus_shortname + '/count.js';
            (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
        }());
    //]]>
</script>
5
EddyR

J'ai le même problème avec l'affichage du nombre de commentaires dans la boucle.

Je résous ce problème en désactivant deux filtres dans le fichier plugins/disqus/disqus.php à la ligne 1124:

<?php
#add_filter('comments_number', 'dsq_comments_text');
#add_filter('get_comments_number', 'dsq_comments_number');

Et j'ai ajouté à mon template span avec des éléments disqus:

<?php
if ( function_exists( 'dsq_identifier_for_post' ) ) {
    global $post;
    echo  '<span class="'.$css_class.' dsq-postid" rel="'.htmlspecialchars(dsq_identifier_for_post($post)).'">';
} else {
    echo '<span class="'.$css_class.'">';
}
4
Marcin
2
anu