Cómo crear un feed personalizado

0 Flares Twitter 0 Facebook 0 Google+ 0 LinkedIn 0 Buffer 0 Email -- 0 Flares ×

Resulta que puedo hacer que mi blog personal de cierta comunidad se carguen entradas de mi blog principal.  ¿Cómo? Pues sencillo. Supongamos que mi blog “donante” se llama http://www.miblog.es

  • con el editor del blog, si es que se puede,  se introduje un código HTML “oculto”, como la cadena de texto que sigue:
    <!— RSS:IMPORT: {aquí van un montón de caracteres} –>
  • se comunica al blog “receptor” la dirección del feed de mi blog, que sería algo así como “http://www.miblog.es/feed/”

Y ya está: el receptor llama al feed, busca los post con ese código, y ya está.

Pues bien, entre nosotros, un rollo. No me gusta nada tener que acordarme de cuál es mi código o tener que ir copiándolo cada vez. Así que me lo he currado:

  • he creado una categoría en mi WordPress llamada “donante”
  • he añadido esa categoría a los post que quiero subir a el blog receptor
  • he creado mi propio feed específico para donaciones
  • he hecho que el blog receptor apunte a este nuevo donante

¿Y cómo se crea este nuevo feed donante? Bueno, esta parte es divertida. En primer lugar he creado un nuevo fichero en el directorio raíz de mi tema de wordpress. Le he llamado vmg_feed_ss2.php, y he copiado y pegado el código que aparece al final de la entrada. Atención a “Template name”, a &args y a $zCode.

  • Tras “Template name” se especifica el nombre de esta plantilla que acabamos de crear.
  • En &args he establecido el filtro que se empleará más adelante, y que en este caso es que salgan todas las entradas con la etiqueta “donacion”.
  • En $zCode he establecido el código que quiere ver el receptor
  • He creado una nueva página, y he seleccionado la plantilla que coincide con la indicada en template name, y la he llamado feed_donante.
  • He creado el tag “donacion”.
  • He añadido el tag a las entradas que me ha parecido más conveniente.
  • He transmitido al receptor que el feed donde debe buscar es http://www.miblog.es/feed_donante/

Y ya está. Espero que no haya resultado demasiado farragosa la explicación. Os dejo con el código. Saludos.

<?php
/*
Template Name: VMG Feed para Donante
*/
/**
 * creado por Vicente Millán a partir de
 * RSS2 Feed Template for displaying RSS2 Posts feed.
 *
 * @package WordPress
 */

header('Content-Type: ' . feed_content_type('rss-http') . '; charset=' . get_option('blog_charset'), true);
$more = 1;
$args ="tag=donacion";
$zCode="<!-- RSS:IMPORT:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -->";

echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>

<rss version="2.0"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  <?php do_action('rss2_ns'); ?>
>

<channel>
  <title><?php bloginfo_rss('name'); wp_title_rss(); ?></title>
  <atom:link href="<?php self_link(); ?>" rel="self" type="application/rss+xml" />
  <link><?php bloginfo_rss('url') ?></link>
  <description><?php bloginfo_rss("description") ?></description>
  <lastBuildDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false); ?></lastBuildDate>
  <language><?php echo get_option('rss_language'); ?></language>
  <sy:updatePeriod><?php echo apply_filters( 'rss_update_period', 'hourly' ); ?></sy:updatePeriod>
  <sy:updateFrequency><?php echo apply_filters( 'rss_update_frequency', '1' ); ?></sy:updateFrequency>
  <?php do_action('rss2_head'); ?>
  <?php query_posts( $args ); ?>
  <?php while( have_posts()) : the_post(); ?>
  <item>
    <title><?php the_title_rss() ?></title>
    <link><?php the_permalink_rss() ?></link>
    <comments><?php comments_link_feed(); ?></comments>
    <pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ?></pubDate>
    <dc:creator><?php the_author() ?></dc:creator>
    <?php the_category_rss() ?>

    <guid isPermaLink="false"><?php the_guid(); ?></guid>
<?php if (get_option('rss_use_excerpt')) : ?>
    <description><![CDATA[<?php the_excerpt_rss() ?>]]></description>
<?php else : ?>
    <description><![CDATA[<?php the_excerpt_rss() ?>]]></description>
  <?php if ( strlen( $post->post_content ) > 0 ) : ?>
    <content:encoded><?php echo '<![CDATA['.$zCode;the_content_feed('rss2'); ?>]]></content:encoded>
  <?php else : ?>
    <content:encoded><?php echo '<![CDATA['.$zCode;the_excerpt_rss(); ?>]]></content:encoded>
  <?php endif; ?>
<?php endif; ?>
    <wfw:commentRss><?php echo esc_url( get_post_comments_feed_link(null, 'rss2') ); ?></wfw:commentRss>
    <slash:comments><?php echo get_comments_number(); ?></slash:comments>
<?php rss_enclosure(); ?>
  <?php do_action('rss2_item'); ?>
  </item>
  <?php endwhile; ?>
</channel>
</rss>

									

0 Flares Twitter 0 Facebook 0 Google+ 0 LinkedIn 0 Buffer 0 Email -- 0 Flares ×

Acerca de Vicente Millán

Consultant at DATAEBRO CRM and online education consultant
Esta entrada fue publicada en Noticias, Nuevas Tecnologías, Software Libre, TIC y sociedad y etiquetada , , , , . Guarda el enlace permanente.