Iván Andréi

Destacados

Crear un Feed o RSS personalizado en WordPress

Wordpress Logo

Todos los blogs con WordPress incluyen un generador de archivo RSS conteniendo de forma predeterminada la información básica del blog como el título, descripción, correo y dirección web del blog, así como los artículos recientemente publicados en un formato RSS o XML, pero a veces se quiere hacer cierta modificación al archivo RSS para agregar nuevos nodos como por ejemplo la dirección web de la miniatura que acompaña a la publicación.

Aunque no es una buena práctica colocar la URL de la miniatura en un nodo <image> </image> por que el navegador no lo leerá como imagen, en otras aplicaciones o extensiones que estemos desarrollando para teléfonos móviles o de escritorio nos puede servir y lo leerá como imagen si se programa correctamente.

Ahora veamos como se crea un feed personalizado para WordPress, no tocaremos para nada el feed predeterminado (www.tublog.com/feed) sino crearemos otros como www.tublog.com/feed-moviles

1) Crea un archivo PHP en el directorio de tu tema (/www/wp-content/themes/tu_tema) que será una plantilla para el feed personalizado. Ingresa el siguiente código.

<?php
/*
Template Name: Custom Feed
*/

$numposts = 10;

function yoast_rss_date( $timestamp = null ) {
  $timestamp = ($timestamp==null) ? time() : $timestamp;
  echo date(DATE_RSS, $timestamp);
}

function yoast_rss_text_limit($string, $length, $replacer = '...') {
  $string = strip_tags($string);
  if(strlen($string) > $length)
    return (preg_match('/^(.*)\W.*$/', substr($string, 0, $length+1), $matches) ? $matches[1] : substr($string, 0, $length)) . $replacer;
  return $string;
}

$posts = query_posts('showposts='.$numposts);

$lastpost = $numposts - 1;

header("Content-Type: application/rss+xml; charset=UTF-8");
echo '<?xml version="1.0"?>';
?><rss version="2.0">
<channel>
  <title>Título del Blog</title>
  <link>http://tublog.com/</link>
  <description>La descripción de tu blog</description>
  <language>es_ES</language>
  <pubDate><?php yoast_rss_date( strtotime($ps[$lastpost]->post_date_gmt) ); ?></pubDate>
  <lastBuildDate><?php yoast_rss_date( strtotime($ps[$lastpost]->post_date_gmt) ); ?></lastBuildDate>
  <managingEditor>[email protected]</managingEditor>
<?php foreach ($posts as $post) { ?>
  <item>
    <title><?php echo get_the_title($post->ID); ?></title>
    <link><?php echo get_permalink($post->ID); ?></link>
    <description><?php echo '<![CDATA['.yoast_rss_text_limit($post->post_content, 500).'<br/><br/>Keep on reading: <a href="'.get_permalink($post->ID).'">'.get_the_title($post->ID).'</a>'.']]>';  ?></description>
    <pubDate><?php yoast_rss_date( strtotime($post->post_date_gmt) ); ?></pubDate>
    <guid><?php echo get_permalink($post->ID); ?></guid>
  </item>
<?php } ?>
</channel>
</rss>

2) Ahora crea una “Página” y dale un nombre.

3) En la opción “Plantilla” selecciona “Custom Feed” y “Guarda” la página.

4) Ahora abre la dirección de tu feed personalizado y verás que funciona.

5) En mi caso agregue el nodo <image> </image> dentro del “foreach” que contiene la URL de la miniatura de la publicación.

<image><?php $thumb = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'thumbnail' );
$url = $thumb['0'];
echo $url;
?></image>

Espero te haya servido este ejemplo de como crear un feed personalizado.

Fuente: Yoast

Publicaciones relacionadas

2 thoughts on “Crear un Feed o RSS personalizado en WordPress”

  1. Jorge del Campo Andrade dice:

    Fabuloso! Sólo una duda. ¿Cómo puedes filtrar las categorías para incluye el feed?
    Saludos y gracias por el aporte. :)

  2. Iván dice:

    Uyy este artículo es muy antiguo. Recuerdo que cree un RSS personalizado para mostrar las noticias junto a la imagen destacada para que se mostrará en una extensión para Google Chrome. Se visualizaba, pero no sabía como hacer para que notificara de las nuevas noticias.

    Si quieres un RSS personalizado quizás te sirva este plugin para WordPress que dice filtra también.

    https://es.wordpress.org/plugins/custom-simple-rss/

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Suscríbete por correo electrónico