Contenido

Toma el control de los RSS de tu WordPress

10 dic

+ 13

La gente de SmashingMagazine ha hecho una recopilación de trucos para tener el máximo control sobre los RSS de tu WordPress. De todos los mostrados creo que estos son los más interesantes.

1) Publica tus RSS más tarde

Imagina, que escribes un post y que nada más publicarlo te das cuenta de que hay un problema en él, lo editas y cuando te das cuenta el RSS ya ha sido generado y tu contenido mediante RSS está erroneo y apareciendo en todos los lectores RSS de Internet.

¿Solución?

Haz que se publiquen más tarde, osea retrasa la generación del RSS unos minutos. No lo vas a notar y tendrás tiempo para pulir el post.

function pulish_later_on_feed($where) {
	global $wpdb;

	if ( is_feed() ) {
		// timestamp in WP-format
		$now = gmdate('Y-m-d H:i:s');

		// value for wait; + device
		$wait = '5'; // integer

		// http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_timestampdiff
		$device = 'MINUTE'; //MINUTE, HOUR, DAY, WEEK, MONTH, YEAR

		// add SQL-sytax to default $where
		$where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait ";
	}
	return $where;
}

add_filter('posts_where', 'pulish_later_on_feed');

En el ejemplo lo retrasa 5 MINUTE, pero podemos hacer que espere lo que nosotros queramos :D

2) Excluye una categoría de tus RSS

Supongamos que tenemos una categoría X que deseamos evitar que sea mostrada por RSS, ya sea por que es personal o privada para los visitantes.

¿Solución?

Sencilla, nos bastará con conocer el ID de la categoría que deseamos ocultar y aplicar el siguiente código.

function myFilter($query) {
    if ($query->is_feed) {
        $query->set('cat','-5'); //Don't forget to change the category ID =^o^=
    }
return $query;
}
add_filter('pre_get_posts','myFilter');

3) Muestra cualquier RSS externo en tu Blog

¿Quieres mostrar en el sidebar el rss de uno de tus otros blogs? Con wp_rss() es muy sencillo.

¿Solución?

Usado wp_rss() esto se convierte en algo realmente sencillo, en tan solo 2 líneas tenemos nuestro RSS cargado.

<?php include_once(ABSPATH.WPINC.'/rss.php');
wp_rss('http://URL_DEL_FEED', NUM_ITEMS); ?>

Únicamente tendremos que indicar la Url del Feed que deseemos mostrar y el número de items que queramos ir mostrando.

4) Deshabilitar el feed tu WordPress

Imagina que no estás interesado en que la gente vea tu Feed o su contenido es privado y no está abierto al público.

¿Solución?

En ese caso, lo mejor es deshabilitar el RSS.

function fb_disable_feed() {
	wp_die( __('No feed available,please visit our <a href="'. get_bloginfo('url') .'">homepage</a>!') );
}

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);

Más en SmashingMagazine.

  • Y si por ej tengo dos blogs, uno de tecnologia en general, y otro de moviles, y quiero que lo que escribo en moviles aparezca en el otro, como puedo importar automaticamente los posts, por ejemplo desde el RSS?

    Estaria guay. Gracias! :D

  • Estaría más guay si comprobases el código antes de hacer el corta-pega. se te han colado un par de > (ampersand-g-t-puntoycoma) en él que vienen del código original y que dan problemas luego.

  • @Elias: Podrías usar wp_rss() para cargar el RSS del otro blog.

    
    // Blog de Móviles
    <?php include_once(ABSPATH.WPINC.'/rss.php');
    wp_rss('http://URL_DEL_FEED', NUM_ITEMS); ?%gt;
    

    Así tendrías el feed importado.

  • Genial el post, y los comentarios muy útiles. Me gusta las soluciones sencillas, son las mejores.

  • Como siempre, haz metido un golazo, que excelente posts, no tienes idea cuanto estuve investigando para sacar algunas categorias del RSS y ahora por fin podré hacerlo. thanks for sharing.

  • Excelentes tips, pero donde o especificamente entre que partes del codigo se pone esto?, va en el loop?

    Saludos.

  • @ed: Pueden ir en 3 sitios.
    1) Como un plugin
    2) El fichero functions.php de nuestro theme
    3) en el fichero my-hacks.php de la raíz de WordPress.

  • Agradezco primeramente tu atencion, ciertamente wp_rss ingresa los items que le indique del rss de otro sitio pero tengo la misma duda o pregunta que en el primer post, tienes una idea de como podria ingresar el articulo completo ( si no completo si la liga con su extracto) de otro sitio y no solo la liga tomada de su rss, lo que deseo es tener dos o mas blogs en mi dominio pero que uno fuese como un blog maestro donde aparecieran los articulos de mis demas sites con el extracto no solo la liga, mil gracias si me pueden ayudar, ya intente con un codigo que intenta ingresar esos datos con un include pero sin resultado entonces estaba viendo si algun tag me ayudaria con ese proceso

  • El: 3) tiene problemas con los caracteres, yo he verificado la codificaciòn en mi blog y en el blog donde extraigo el rss y me tira errores.

  • @etzekiel: Lo mejor es reescribir las comillas de los scripts que copias de cualquier página.

  • Me pasa lo mismo que @etzekil, tengo problemas en la codificación de el RSS que traigo para mostrar, es de otro blog propio en el cual reviso y tiene la codificación de caracteres de wordpress como UTF8, hasta intente traerlo desde feedburner en vez de el original y siguen sin aparecer los acentos.

    Es raro, tengo los dos blogs en UTF8, lo único que me faltaría es ver las DB pero seria la ultima alternativa si a nadie se le ocurre como solucionar esto :S.

    Saludos.

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.