Toma el control de tus Feeds en WordPress
Las opciones que trae por defecto WordPress sobre los Feeds están bien a nivel de usuario medio, pero hay veces que necesitamos modificar algo para personalizarlo a nuestro gusto. Por ello me he tomado la libertad de realizar este artículo, en el que tomaremos el control de los Feeds de WordPress de forma sencilla.
En este artículo vamos a trabajar con el archivo functions.php de nuestra plantilla y el fichero .htaccess de nuestro servidor local o remoto.
Deshabilita todos los Feeds
A veces queremos hacer pruebas con nuestro WordPress y no queremos que estas se muestren en nuestro Feed, o simplemente el CMS con otros fines que no incluyen noticias. Para estos casos, y otros muchos más, hay una forma de inutilizar el Feed.
function fb_disable_feed() { wp_die( __('Actualmente el Feed está desactivado!') ); } add_action('do_feed', 'fb_disable_feed', 1); add_action('do_feed_rdf', 'fb_disable_feed', 1); add_action('do_feed_rss', 'fb_disable_feed', 1); add_action('do_feed_rss2', 'fb_disable_feed', 1); add_action('do_feed_atom', 'fb_disable_feed', 1););
Controla cuando quieres que tus artículos sean visibles en el Feed
Cuando publicamos un artículo este se muestra inmediatamente en nuestro Feed. Esto es un problema si después de ser publicado queremos modificar alguna cosa, pues en el Feed aparecerá el original y no el modificado.
function publish_later_on_feed($where) { global $wpdb; if ( is_feed() ) { $now = gmdate('Y-m-d H:i:s'); $wait = '5'; $device = 'MINUTE'; // MINUTE, HOUR, DAY, WEEK, MONTH, YEAR $where .= "AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') >$wait"; } return $where; } add_filter('posts_where', 'publish_later_on_feed');
Por defecto, retrasa la visibilidad de los artículos en el feed cinco minutos, pero podemos modificarlo a nuestro gusto cambiando el valor de la variable $wait, teniendo en cuenta también la variable $device, por si queremos usar otra medida de tiempo.
Excluye una categoría del Feed
Este hack es válido si por ejemplo hacemos uso de Minipost y no queremos que estos se muestren directamente en el Feed, o simplemente una categoría menor que no queramos mostrar directamente en el Feed a nuestros lectores.
function exclude_cat_feed($query) { if ($query->is_feed) { $query->set('cat','-5'); // ID de la categoria } return $query; } add_filter('pre_get_posts','exclude_cat_feed');
Lo único que tendremos que hacer es averiguar el ID de la categoría que queramos excluir. Lo haremos a través del panel de administración, Entradas > Categorías y editaremos la categoría deseada. En la barra de dirección de nuestro navegador aparecerá algo similar a …/categories.php?action=edit&cat_ID=45, siendo 45 el ID de dicha categoría. Ahora solo hará falta modificar el valor $query->set(‘cat’,'-5′); por $query->set(‘cat’,'-45′); en este caso.
Redireccionando nuestro Feed a FeedBurner
Existen Plugins para WordPress que cumplen esta función, pero hay veces que nos gusta hacer las cosas nosotros sin ayuda externa. La forma de hacerlo es editando el fichero .htaccess de nuestro servidor. Lo primero que haremos será hacer una copia de seguridad del mismo, por si tocamos algo que no debemos. Después añadiremos las siguientes líneas, modificando previamente TU_BLOG por lo que deseemos.
# temp redirect wordpress content feeds to feedburner <ifmodule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC] RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC] RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds.feedburner.com/TU_BLOG [R=302,NC,L] </ifmodule>
Otra opción mas sencilla es utilizar un plugin, como puede ser FD FeedBurner Plugin y hacerlo todo desde nuestro Dashboard.
Añade contenido adicional a tu Feed
Puede llegar el momento en el que queremos añadir publicidad, un mensaje o cualquier otra cosa en nuestro Feed, pero que a la vez no se muestre en el artículo original del blog. Tan solo habrá que modificar la variable $content e incluir el contenido que deseemos.
function insert_anything($content) { $content = $content.'¿Has visitado davidcostales blog hoy?'; return $content; } add_filter('the_excerpt_rss', 'insert_anything'); add_filter('the_content_rss', 'insert_anything');
Mostrar el número de lectores de Feedburner en texto plano
No a todos nos gustan los contadores de suscritos que nos ofrece FeedBurner y queremos mostrarlos a nuestro gusto. Para este fin haremos uso del siguiente código:
function feedburner() { $fburl="https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=TU_BLOG"; $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $fburl); $stored = curl_exec($ch); curl_close($ch); $grid = new SimpleXMLElement($stored); $rsscount = $grid->feed->entry['circulation'] $rsscount = number_format($rsscount); $rsscount = str_replace(",",".",$rsscount); echo $rsscount; }
Lo primero que debemos hacer es modificar TU_BLOG por lo que deseemos y guardar los cambios en nuestro archivo functions.php. Para mostrar el resultado pegaremos < ?php feedburner();?> en nuestra plantilla.
