Agregando Feeds externos a nuestro Blog

Han deseado alguna vez disponer en su blog de RSS Feeds pertenecientes a alguna de sus webs favoritas ?

Me encontré recientemente buscando una solución para ello, y poder así mostrar una lista de las últimas noticias de El País en mi Blog, aún en construcción.

Hoy veremos cómo implementarlo.

Primero necesitaremos encontrar la URL con los Feeds de nuestro site a seguir, en mi caso es la siguiente : http://www.elpais.com/rss/feed.html?feedId=1022

Luego bastará con enterarse de que WordPress puede actuar como lector de Feeds, y pastear este código en alguna div de nuestro template (por ejemplo, abriendo sidebar.php con un editor de texto, y añadiendo el código en último lugar).

<h2><?php _e('Noticias:'); ?></h2>
<?php
include_once(ABSPATH . WPINC . '/feed.php');

$rss = fetch_feed('http://www.elpais.com/rss/feed.html?feedId=1022');

$maxitems = $rss->get_item_quantity(5);

$rss_items = $rss->get_items(0, $maxitems);
?>

<ul>
<?php if ($maxitems == 0) echo '<li>No items.</li>';
else

foreach ( $rss_items as $item ) : ?>
<li>
<a href='<?php echo $item->get_permalink(); ?>'
title='<?php echo 'Posted '.$item->get_date('j F Y | g:i a'); ?>'>
<?php echo $item->get_title(); ?></a>
</li>
<?php endforeach; ?>
</ul>

En quantity aquí hemos puesto 5, pero ello es por supuesto modificable por el número que queramos.
Espero que lo disfruten y abran fuego en los comentarios !

Comentarios
  1. Hola amigo, muy interesante esta solución, pero tengo una duda. Imaginemos que tenemos dos blogs pero quiero insertar lo más actual de uno de mis blogs en el otro. como puedo hacer algo paresido a esto amigo?

    Escrito el15/10/2009
  2. Ignacio

    Hola Richard, lo primero que tienes que hacer es buscar la URL en la que WordPress genera los feeds, y que tiene una forma del tipo :

    http://miwebsite.com/wp-rss2.php

    Aquí estaríamos pidiendo un tipo de formato de feed : RSS2, de los más comunes para ser leídos (el Blog ‘capturador’, si funciona sobre WP, puede leer otros tantos ; y en cualquier caso esa URL bastará).

    Luego la pasteas (en la cuarta linea, sustituyendo el ejemplo dado) en el código que sugiero más arriba.

    Más info : http://codex.wordpress.org/WordPress_Feeds

    Dime si está ok ! Ciao.

    Escrito el15/10/2009
  3. Hola

    Los temas que soportan widgets (default sin ir más lejos) ya traen esta funcionalidad “de serie”.

    Escrito el16/10/2009
  4. @Javier : gracias por la aportación, éste código aquí es bricolage rápido, es un “gimme now”.

    @Richard, para recojer los feeds de uno de tus blogs, tienes que buscar la URL en la que WordPress los generará, y que tiene una forma del tipo :

    http://miwebsite.com/wp-rss2.php

    Aquí estaríamos pidiendo un tipo de formato de feed : RSS2, de los más comunes para ser leídos (el Blog ‘capturador’, si funciona sobre WP, puede leer otros tantos ; y en cualquier caso esa URL bastará).

    Luego la pasteas (en la cuarta linea, sustituyendo el ejemplo dado) en el código que sugiero más arriba. O como dice Javier en un widget si tu tema tiene soporte para ello.

    Más info : http://codex.wordpress.org/WordPress_Feeds

    Dime si está ok ! Ciao.

    Escrito el16/10/2009
  5. Richard

    Muy buena solución, pero si en lugar de leer un RSS2 quiero que lea los artículos más actuales o los comentarios más recientes de mi otro Blog?

    Escrito el16/10/2009
  6. Richard

    Javier Lorente, Me podrías decir unos ejemplos de themes que traigan esta función incluida

    Escrito el16/10/2009
  7. Javier Lorente

    El theme “Default” (el que viene por defecto nada más que instalamos WordPress) Por ponerte un ejemplo, este: http://www.windows9.org.es Ahí muestro feeds de http://www.windows-7.com.es autonáticamente en la sidebar. Es más, la función viene incluída en el Core de WordPress. Lo único que se requiere es un tema compatible con los widgets para mostrarlos.

    Saludos

    Escrito el16/10/2009
  8. Buenas,
    Hay alguna forma de filtrar los rss, es decir que solo se muestres aquellos que contega “X” palabra?
    Gracias. Saludos.

    Escrito el22/10/2009
  9. Myrian

    muy interesante
    gracias
    saludos!

    Escrito el28/10/2009
  10. Pitu

    Buenas Ignacio, tengo una duda.

    Sabrias como puedo poner en mi blog noticias de otro sitio que tiene RSS pero no en ese formato?

    Ejemplo: http://www.canalsporting.es/

    Gracias!
    Pitu

    Escrito el05/11/2009
  11. Ignacio

    Hola Pitu,
    ¿ Has probado con esta URL ?
    http://www.canalsporting.es/rss/index.xml

    Se trata siempre de la misma URL que tu navegador o lector de feeds utilizaría para registrarse en ése feed.

    Escrito el06/11/2009
  12. Pitu

    Pues efectivamente! Que fácil… Muchas gracias!

    Ahora no se que pasa, quiero poner en mi wordpress esta otra: http://mas.lne.es/sporting/rss.xml (que viene de esta página: http://mas.lne.es/sporting/) pero me da error! En wordpress me dice que no hay ningún feed en la url (en la primera), Sabes que puede pasar?

    Mil gracias de nuevo.
    Pitu

    Escrito el06/11/2009
  13. Hola Ignacio, me ha funcionado al instalar este código, ha tomado bien los 5 feeds (titulares) sin problema, pero al crear un nuevo artículo en la web de origen no se me ha actualizado la de destino. ¿Alguna idea?

    Los feeds que estamos usando son los de wordpress, no estamos usando redireccionamiento de Feedburner ni de ningún otro servicio.

    Escrito el23/11/2009
  14. Solo una cosilla. la última parte del código muestra solo los titulares de los post recogidos por el fedd y la fecha. ¿podemos mostrar un extracto también añadiendo el ?

    Escrito el06/05/2010
  15. … el codigo ?php the_excerpt(); ?

    Escrito el06/05/2010
  16. Hola guardafaro, prueba con:

    <?php echo $item->get_the_excerpt(); ?>

    (lo podrás poner cuando se cierra el link al lado de get_title, dime si te funciona).

    Escrito el06/05/2010
  17. Gracias, Ignacio. No he podido probar el añadido para los extractos, porque aún estoy peleando con la pieza de código original que se ha puesto. Porque me arroja seis advertencias del tipo:
    “Warning: strpos() expects parameter 1 to be string, array given in C:wp-includesclass-simplepie.php on line 13502”

    Y termina con:
    “Fatal error: Call to undefined method WP_Error::get_item_quantity() in C:themesneovintagesidebar-left.php on line 92”

    Escrito el07/05/2010

DEJA TU COMENTARIO