Disqus WordPress Plugin


Hace un par de meses, creando un theme de Wordpress para un proyecto, se decidió utilizar el plugin de Disqus para el manejo de comentarios dentro de las entradas del blog, ya que se ve un poco mas limpio, y a diferencia del sistema de comentarios que brinda WordPress, Disqus necesita que el usuario haya iniciado una sesión en Disqus para poder insertar un comentario, evitando en gran manera el spam en las entradas, y por consiguiente, llenar la bandeja de entrada del administrador del blog.

La implementación del plugin es bastante sencilla, pero hay un pequeño detalle. Después de haber configurado el plugin como se indicaba en las instrucciones, noté que todas las entradas del blog mostraban la misma discusión, es decir, en una entrada del blog, publiqué un comentario, y en todas las demás entradas se veía ese mismo comentario.

Disqus genera una discusión por cada entrada de blog, por lo que se me hizo raro ver el mismo comentario que había hecho en cada una de las entradas publicadas en el blog.

Navegando en la red encontré que el problema se debe a que las discusiones tienen un mismo identificador, es decir, que el plugin no podía reconocer una entrada de otra, por lo que siempre se muestra(n) el/los mismo(s) comentario(s).

Michael Kowalchik explica que en el código fuente del plugin, en el archivo comments.php encontró que la variable disqus_identifier estaba vacía.

<script type="text/javascript">
/* <![CDATA[ */
    var disqus_url = '<?php echo get_permalink(); ?>';
    var disqus_identifier = '<?php echo dsq_identifier_for_post($post); ?>';
    var disqus_container_id = 'disqus_thread';
    var disqus_domain = '<?php echo DISQUS_DOMAIN; ?>';

Esa variable se define a través de una función dsq_identifier_for_post($post), la cual se encuentra en el archivo disqus.php

function dsq_identifier_for_post($post) {
    return $post->ID . ' ' . $post->guid;
}

El problema es que la vriable $post no se encuentra definida, por lo que se redefine la función, reemplazando el return de las propiedades del objeto $post, por funciones que nos regresaran los valores que estamos buscando:

function dsq_identifier_for_post($post) {
    return get_the_ID() . ' ' . get_the_guid();
}

Una vez hecho este cambio, el sistema de disqus reconocerá cada entrada de blog como una discusión diferente y ya no se verán los mismos comentarios en todas las entradas.

Anuncios
Esta entrada fue publicada el 5 mayo, 2014 a las 22:33. Se guardó como Tech y etiquetado como , , , , , , , , . Añadir a marcadores el enlace permanente. Sigue todos los comentarios aquí gracias a la fuente RSS para esta entrada.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: