Publicado el Lunes 06 de Agosto del 2007 @ 20:08 por Armonth.
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:

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:
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.
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>
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.
¿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.
¿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.
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.
¿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:
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).
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.
Los currantes nos mantenemos al pie del cañón xD