Tres meses atrás publiqué la solución a un error uno de los plugins más sociales con los que estuve trabajando. El plugin era Backtype Connect y hace poco desapareció del escenario de muchos blogs luego que anunciara el que ya no seguiría dando soporte al plugin debido a los altos costes que suponía el mantenimiento de su servidor. Los comentarios se guardaban en sus almacenamientos. ¿El fin? No.

Tweetbacks: Reacciones en Twitter

Muchos nos pusimos tristes con esta noticia y buscamos otras alternativas, como DISQUS, que no me  terminaba de convencer. Así que ayer me puse a la caza de un plugin que hiciera algo de ello. Sabía cómo funcionaba el sistema de Topsy, así que quise encontrar la solución ideal muy similar al cómo funcionaba Backtype Connect, pero mejor.

Recomendación inicial: Toda edición del código del plugin debe ser realizada antes de activarlo para que los cambios se reflejen una vez activado. Es como recomendación, ya que sino deberán desactivar y activar nuevamente. Sean muy cuidadosos al tocar el código y, de ser posible, creen una copia de respaldo de su base de datos.

Comenzaré hablando del plugin para que entiendan el cómo funciona y sus características y luego seguiré con las ediciones al código, explicando muy suscintamente lo que hacen, sin ser demasiado técnicos, aunque si desean discutir sobre el código, no tendré ningún problema en que me dejen sus comentarios y responderles.

Topsy plugin para WordPress

El plugin Topsy para WordPress permite insertar sus botones sociales automáticamente en casi todas las páginas del blog, ya sean páginas, posts, portada, categorías, etc. Además de ello, y esa es la opción interesante, es que como funcionalidad opcional es capaz de detectar todos los trackbacks que hagan referencia a tus posts en Twitter.

Botón de Topsy insertado en blog de WordPress

Es claro que con Topsy no podremos generar la misma serie de backlinks o menciones generadas en otras grandes redes sociales como Digg, Reddit o Facebook, pero tiene una ventaja particularmente importante con respecto a su antecesor de uso:

Topsy extrae los comentarios de su base de datos y las guarda en nuestra base de datos local.

Con esto evitamos que pase lo que pasó con Backtype: Desaparición de todas nuestras reacciones y comentarios del blog.

También tenemos estadísticas gratuitas de los artículos y de nuestra página. Por decir algo:

http://topsy.com/tb/www.tecnologiadiaria.com

http://topsy.com/tb/www.tecnologiadiaria.com/2008/09/refranes-blogger.html

Para complementar podemos filtrar reacciones en Twitter de ciertos usuarios, como por ejemplo, filtrar los retweets de la propia cuenta del blog cuando se publica una noticia. Podemos personalizar los hashtags o atribuir los retweets a una cierta cuenta de Twitter con @. Personalizar los colores de los botones sociales, los tamaños, textos, filtrar por categoría, etc.

Modificando comentarios Topsy con avatares

Una de las cosas que no me gustaron de Topsy inicialmente era que no permitía mostrar los avatares de la gente que comentaba vía Twitter, por lo que todos se consideraban como gravatares de mistery man (hombre misterioso).

Hackeando Topsy para que funcione con avatares y moderación de comentarios

Esto se pudo solucionar gracias a una función de WordPress Codex que sobreescribe la función que permite obtener un avatar de los comentarios en WordPress, me refiero a la función get_avatar y a un hook para complementarlo (como lo usaban aquí, en Semageek).

Lo que haremos entonces será añadir la función que captura el avatar (separada en dos) y la que lo ejecuta y sobreescribe (el hook add_filter). Para eso buscaremos la línea 28 a la 30 donde hay solo lo siguiente:

28
29
30
function shortcode_topsy_retweet_small() {
    return topsy_generate_retweet_button('small');
}

Y lo cambiaremos por (las 3 primeras líneas permanecen invariables):

28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
function shortcode_topsy_retweet_small() {
    return topsy_generate_retweet_button('small');
}
 
add_filter('get_avatar', 'knx_get_avatar', 10, 5);
 
function knx_get_avatar($avatar, $id_or_email, $size='96', $default='', $alt='') {
	if (!is_object($id_or_email) && $comment_ID = get_comment_ID()) {
		$id_or_email = get_comment($comment_ID);
	}
	if (is_object($id_or_email)) {
		if (sgk_is_topsy_comment($id_or_email)) {
			$alt = '';
 
			if (preg_match("/^https?:\/\/(?:[-\w]+\.)?twitter\.com\/(\w{1,15})/", $id_or_email->comment_author_url, $match)) {
				$tweeter_username = $match[1];
			}
			$default = 'http://img.tweetimag.es/i/' . $tweeter_username . '_n';			
 
			return "<img alt='{$alt}' src='{$default}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
		}
	}
	return $avatar;
}
 
function sgk_is_topsy_comment($comment, $ret_ID=false) {
	if (substr($comment->comment_agent, 0, 5) == 'Topsy') {
		if ($ret_ID) {
			return $comment->comment_ID;
		}
		return true;
	}
	return false;
}

Como podemos observar se ha añadido el filtro de la función get_avatar mediante add_filter que ha dado como resultado knx_get_avatar (no es necesario que entiendad el parámetro de prioridad -10- y el de número de parámetros – 5). Con eso ya tendremos nuestros avatares directamente desde WordPress.

Moderar tweetbacks de Topsy

Cuando me refiero a un tweetback hago referencia a un trackback de Twitter, una reacción en Twitter de una URL de nuestro blog. Por defecto Topsy genera automáticamente todos los tweetbacks y los ingresa como comentarios, seas cuales fueran.

Si desean poder moderarlos manualmente (si tienes muchos posts y muchas reacciones puede ser tedioso) debemos realizar un sencillo cambio en el código. De paso añadiremos el clásico texto: “Este comentario fue originalmente publicado en Twitter” con el enlace al tweet para el texto en negrita.

Buscamos la línea 295 y cambiamos:

295
'comment_content' => $wpdb->escape("<span class=\"topsy_trackback_comment\"><span class=\"topsy_twitter_username\"><span class=\"topsy_trackback_content\">$tweet_text</span></span>"),

Por esto:

295
296
'comment_approved' => '0',
        'comment_content' => $wpdb->escape("$tweet_text <p><em>Este comentario fue originalmente publicado en <a href=\"$tweet_url\" rel=\"nofollow\">Twitter</a></em></p>"),

Como pueden observar, se ha añadido en el arreglo el parámetro comment_approved dándole el valor de 0 (por defecto es 1, que significa aprobado). También hemos modificado el contenido del comentario añadiéndole un párrafo adicional donde hemos puesto el texto que habíamos indicado.

Para ahorrarles todo el trabajo en la edición, tengo un txt con el texto que deberán cambiar en el archivo topsy.php de la sección Plugins / Editor, lueg de haber seleccionado el plugin Topsy Retweet Button a editar. No olviden primero descargar el plugin original desde aquí.

Espero que les sirva tanto como a mi.

Descargar Topsy.php modificado

Etiquetas: , ,

Comentarios ( 6 ) en: Topsy: Modificando el plugin con avatares y aprobación de comentarios
  • paco dijo:

    Todavía sirve este plugin? leo que ya no es compatible con wordpress 3.0

  • KnxDT dijo:

    @Paco: Aquí todo de lo más normal. Yo estoy usando el plugin en su versión 1.2.7 y WordPress actualizado.

    Saludos 😉

  • Como Quedar Embarazada dijo:

    muchas gracias por el informe amigo! Habia escuchado sobre Topsy, pero no sabia como funcionaba, yo creo que me conviene probarlo!

    Gracias

    Saludos

    – Luisa

  • KnxDT dijo:

    Mucha suerte, Luisa. Cualquier cosa, estamos por aquí para ayudar.

    Saludos 😉

  • Kiko Ed dijo:

    Hola KnxDT

    Conoces alguna alternativa a tweetimag.es ?? Supongo que eres consciente de que esto dejó de funcionar hace unos meses 🙁 Usé tus tips y me fué perfecto hasta entonces. Ya no encuentro como mostrar los avatares de twitter en mis comentarios :/

    Gracias de antemano. Saludos!

  • KnxDT dijo:

    Estimado:

    Daré unas vueltas por la web y espero encontrar alguna alternativa sobre la cual podamos meterle la mano al código 🙂

    Saludos!