5.1.1.

22 julio 2005

Atom 1.0 para Wordpress

Categoría

Suponiendo que se enteraron de que Atom 1.0 ya es (casi) un hecho, aprovecho para publicar una plantilla para generar feeds de Atom 1.0. en

Código fuente de plantilla de Atom 1.0. Atom 1.0 no es compatible con Atom 0.3. Eviten modificar (aún) su plantilla actual, al menos hasta que existan implementaciones. Esto no debe pasar más alla de lo anécdotico.

También publique un (extremedamente simple) archivo ejemplo de Atom 1.0. Si tienen oportunidad, agradecería que lo probaran con su lector habitual para conocer si existen implementaciones. De momento puedo confirmar que Bloglines sencillamente no lo reconoció.

Si están interesados en oir quejas y comentarios, pueden seguir. Están advertidos.

¡Que código más sucio!

Sí, lo sé. Está mal visto no haber escrito funciones pero sepan que, primero, no soy programador, y segundo, para el momento que estaba haciendo eso, estaba desproticando contra todos los seres vivientes.

Igualmente tengan en cuenta que en un momento estuvo muchisimo peor (si no fuera porque después algunas de esas mal documentadas funciones de Wordpress sirvieron como hack).

Fechas en Atom y lidiando con Wordpress

Atom 1.0 tiene los elementos published y updated para marcar la fecha de publicación y de última actualización de un post (en Atom 0.3 eran issued y modified). Por defecto, Wordpress escribe en ambas la fecha de publicación. Entonces simplemente la cuestión era corregir el contenido de updated. El problema es que Wordpress no tiene ninguna función documentada para obtener la fecha de última modificación, así que hubo que usar un pequeño hack que encontré en No Template Tag has access to post_modified (y pasar el resultado directamente a mysql2date que es quien realmente hace el trabajo de get_post_time).

Categorias en Atom

El nuevo elemento category tiene tres atributos. scheme, mas alla de lo que dice la especificación, parece que se refiere a la ruta absoluta a la raíz de las categorias. En Wordpress esto normalmente es url-del-blog/category/. La única forma que encontré de obtener este dato (no todos tienen sus categorias dentro de category) fue engañar a get_category_link pasandole un id de una categoria inexistente (la categoria 0) para que, sin proponerselo, devuelva la ruta absoluta.

term identifica la categoria. Normalmente sería lo que se le agregaría a scheme para llegar a la susodicha categoria. El problema es que algunas categorias pueden ser descendientes de otras. Así que nuevamente usando get_category_link se obtiene la ruta absoluta a la categoria (que incluye a las categories superiores) y se le extrae el contenido del elemento scheme. Ejemplo: Si la ruta a la categoria es url-del-blog/categoria/personal/opinion/, se extrae el contenido de scheme (url-del-blog/categoria/ y se obtiene el term (personal/opinion/).

Eso no es todo

Como mínimo hay dos correcciones que hacer, pero las dejo para la proxima. De momento esta plantilla cumple su cometido.

Powered by Blogger