Cómo agregar el contador de comentarios de Disqus

27 feb 2011, 11:51:20
Vistas: 24.2K
Votos: 5

Debo estar ciego pero no puedo encontrar por nada las instrucciones completas para hacer funcionar el contador de comentarios de Disqus.

Todo lo que quiero mostrar es simplemente el número del contador de comentarios.

He marcado la opción "Output JavaScript in footer". Tengo bucles personalizados pero no tengo idea de qué se supone que debo poner en ellos para activar el contador de comentarios.

Mi archivo loop.php es:

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

El código JavaScript de Disqus para el pie de página es:

<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>
4
Comentarios

Creo que más información sería útil: ¿De dónde sacaste ese código? ¿Estás usando el plugin de Disqus o el código universal? ¿Qué versión de WP? Si estás usando el plugin, ¿qué versión del plugin? Si usaste el código universal, ¿cuál es el código que usaste para renderizar la sección de comentarios de Disqus?

matt matt
6 mar 2011 23:55:36

La versión de Wordpress es la más reciente, al igual que el plugin de Disqus. El Javascript es el código de pie de página de Disqus. El código que estoy usando para renderizar los comentarios de Disqus es el código del loop... pero no estoy seguro exactamente qué código está buscando Disqus, de ahí el problema.

EddyR EddyR
8 mar 2011 14:39:40

En pocas palabras... ¿cómo hago para que el plugin de Disqus para Wordpress muestre solo el número de comentarios dentro de "the loop"? Solo quiero un código de ejemplo.

EddyR EddyR
8 mar 2011 14:46:40

lo siento, no vi que habías respondido. Estoy comentando desde mi teléfono así que no tengo toda la información que necesito a mano. Todavía no entiendo de dónde sacaste el código. ¿Del plugin o del código universal en su sitio? No veo dónde defines el identificador de disqus.

matt matt
9 mar 2011 08:40:17
Todas las respuestas a la pregunta 2
1

Tengo el mismo problema mostrando el número de comentarios en el loop.

Lo solucioné desactivando dos filtros en el archivo plugins/disqus/disqus.php en la línea 1124:

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

Y agregué a mi template un span con elementos de 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.'">';
}
18 mar 2011 11:09:52
Comentarios

Al final se me ocurrió algo similar y estaba por publicar la solución ayer pero lo olvidé :) Ahora tengo que modificar su marcado predefinido después del hecho para hacer algo útil con él suspiro

EddyR EddyR
19 mar 2011 06:15:44
Comentarios

¿Qué es data-disqus-identifier? ¿Qué es dsq_thread_id? ¿Dónde lo coloco? ¿Cómo lo llamo? No es el mismo código que proporciona automáticamente el plugin de Wordpress. Este es mi problema: no explican nada.

EddyR EddyR
27 feb 2011 16:18:56

"Puedes hacer esto agregando #disqus_thread al final del atributo href de tus enlaces." ... entonces es algo como <a href="http://example.com#disqus_thread">Tu texto del enlace</a>

kaiser kaiser
27 feb 2011 17:41:42

Ya lo hice... mirando el código js parece buscar todos los <span class="dsq-postid">, luego establece el atributo rel="data-disqus-identifier" en el parentnode y agrega "#disqus_thread". Así que supongo que debería configurarse como <a href="misitio"><span class="dsq-postid"></span></a> pero nuevamente - nada ???

EddyR EddyR
27 feb 2011 18:06:29