Gravatar de Armonth

WP-img2feed: mostrar comentarios y trackbacks en el feed

WP-img2feed es un hack que he desarrollado pensado como base para generar y mostrar imágenes con el número de comentarios y referencias (trackbacks y/o pingbacks).

¿Por qué generar imágenes para eso? Porque si en lugar de una imagen generamos el texto sin más cada nuevo comentario contará como nuevo contenido y mostrará la entrada como no leída. Eso resulta realmente irritante.

Es por eso que al igual que en Feedburner o en menéame (de donde tomo buena parte de la idea y código) saco este hack.

Para ser usado, libGD es requerido. Una vez activado en cada entrada del feed se verá algo similar a lo siguiente:

wp-img2feed - ejemplo

Instrucciones

Lo primero que hay que hacer es descargar el fichero wp-img2feed.zip y descomprimirlo en la raíz del blog.

Contiene los siguientes ficheros:

  • feed-image-generator.php: el generador en sí, pensado para funcionar de dos maneras, la óptima es de forma dinámica y la otra enviando las imágenes a un cache.
  • feed-cached.php: código a incluir en el feed si vamos a usar las imágenes cacheadas en lugar del generador.
  • feed.php: código a incluir en el feed para llamar al generador.

El feed.php podríamos incluirlo directamente en el feed pero como hay que añadirlo en varias fuentes (RSS2, ATOM) pues creo que es más fácil mediante un include.

Dinámico

Para empezar a hacerlo funcionar buscaremos el fichero que genera el feed (en la rama 2.0.x es el wp-rss2.php, wp-atom.php, etcétera, mientras que en la 2.2.x está en wp-includes/feed-rss2.php, wp-includes/feed-atom.php, etcétera) y buscaremos donde pone:

<content:encoded><![CDATA[<?php the_content() ?>]]></content:encoded>

Esta es la parte que muestra el contenido del feed en la versión completa (sin sumarios), toca añadir código justo antes del ]].

Al ser dinámico sólo tenemos que llamar al generador mediante un include:

<content:encoded><![CDATA[<?php the_content() ?>
<!--mclude wp-img2feed/feed.php-->
<?php include_once(ABSPATH . 'wp-img2feed/feed.php'); ?>
<!--/mclude-->]]></content:encoded>

Cacheado

Para la versión cacheada cambiaremos el código anterior donde pone feed.php por feed-cached.php. Luego deberemos editar el feed-image-generator.php y mirar abajo del todo donde pone:

imagepng($feed);                       // Generate image without cache.
//imagepng($feed, $store);             // Generate image and store in wp-content/cache/feed-img/

Comentamos la primera línea añadiendo al principio // y descomentamos la segunda quitando los // del principio. Por último creamos el directorio feed-img dentro de wp-content/cache/ y le damos todos los permisos de escritura.

Si así lo deseamos luego de generar la imagen podemos destruirla añadiendo justo después de la segunda línea:

imagedestroy($feed);

Esto no hay que hacerlo si usamos el script dinámico pero posiblemente es recomendable en la versión cacheada.

F.A.Q

  1. ¿Por qué no hacer un plugin en lugar de un hack?.

    Queria que fuese lo más independiente posible de la versión de WordPress y al mismo tiempo lo más limpio posible para que sea fácilmente expansible o adaptable al gusto de cada uno.

  2. ¿Para qué cambias el singular y el plural en el código?

    Mostrar en una imagen “1 comentarios y 0 referencias” por ejemplo suena mal, así que aunque sea una pijada si el número de comentarios o referencias es igual a 1 se pasa la palabra a singular.

  3. La imagen se ve un poco cutre, ¿no podrías haberla puesto más estilizada?.

    La idea la he cogido del menéame, por eso he aprovechado buena parte del código. Además no soy muy entendido en el uso de libGD por lo que esa parte queda igual que la de menéame (salvo el color) para que cada uno lo ponga a su gusto. Además no es tan cutre }:P.

  4. ¿Por qué dos versiones? ¿Cual es mejor usar?.

    Generar estas imágenes al vuelo no consume gran cosa y es mejor usar la forma dinámica. Pero seguramente se pueden mejorar varias cosas de este hack.

    También hay que tener en cuenta que para algunos blogs mostrar un par de imágenes por feed no le suponga ningún problema pero sí el generarlas continuamente (generalmente por estar ya al límite de la carga que pueden soportar). Es por eso que lo he dejado preparado para que se puedan fácilmente cachear las imágenes.

    ¿El problema? Pues que las imágenes son cacheadas y no son generadas de nuevo si ya existen pero no son borradas cuando se agregan nuevos comentarios así que si no se van borrando de vez en cuando no se vuelven a generar. Eso mismo ahora no lo quiero tocar porque quiero ver la forma más fácil de hacerlo, algunas ideas:

    1. Integrarlo con WP-Cache (no me convence).
    2. Borrarlas todas cada X tiempo.

    La segunda parece sin duda la más sencilla, sobretodo porque a diferencia del cache de wp-cache, la cantidad de datos a borrar y regenerar es infinitamente menor.

Por último se agradece cualquier colaboración y/o cualquier variante a la parte que genera la imagen (más que nada para ofrecer nuevas imágenes, con distinto tamaño/fuente, etcétera).

4 Comentarios (feed)

  1. Gravatar de Armonth Armonth nos comenta:

    Se me acaba de ocurrir (por eso no lo he puesto en la entrada) pero hay una tercera opción que no requiere de nada de código extra: un puñetero cronjob que borre cada hora las imágenes x-DDDD

    Lunes, 6 de Agosto/2007 @ 20:13

  2. Gravatar de Reboot Reboot nos comenta:

    Y digo yo… ¿Por qué no tiras de un pequeño fichero de configuración para poder hacer el hack multiidioma? Rollo:
    $HACK[comentario]="comentario";
    $HACK[comentarios]="comentario";
    $HACK[referencia]="referencia";
    $HACK[referencias]="referencias";

    Y así aunque tengas hardcoded lo del singular y el plural, luego cada uno se lo monta como le brote.

    Martes, 7 de Agosto/2007 @ 12:42

  3. Gravatar de Armonth Armonth nos comenta:

    Reboot a efectos de quitarle complejidad ¿qué es más fácil? ¿editar un fichero con poco código o editar otro fichero con poco código? Ninguna.

    Bueno, sí, la única diferencia es que permitiría incorporar varios idiomas en la propia distribución del código pero entiende que mi intención desde el primer momento es quitarle todo lo innecesario :-)

    Igualmente gracias.

    PD: Jo, se nota que estamos en vacaciones, el ritmo de visitas no ha decrecido (¿?) pero el de comentaristas se nota xD

    Martes, 7 de Agosto/2007 @ 15:35

  4. Gravatar de Reboot Reboot nos comenta:

    Los currantes nos mantenemos al pie del cañón xD

    Miércoles, 8 de Agosto/2007 @ 12:58

No seas tímido, da tu opinión

Sé respetuoso con los demás, la diferencia de opiniones enriquece la discusión, los comentarios bajo ciertas circunstancias pueden ser moderados y requerir aprobación.