Logo Wordpress en fondo gris

Crear un Feed o RSS personalizado en WordPress

Sepa como crear un Feed o RSS personalizado en WordPress para añadir más atributos que no se incluyen en el feed que viene por defecto.

Todos blogs con WordPress tiene integrado un generador de contenido RSS de forma predeterminada que muestra 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 URL 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 lee la imagen, si nos puede servir al crear aplicaciones para teléfonos móviles o extensiones del navegador que mostrará las últimas publicaciones junto a la miniatura.

Veamos como crear un feed personalizado para WordPress sin tocar para nada el feed predeterminado (www.tublog.com/feed), sino creando uno nuevo como www.tublog.com/feed-moviles

Crear un Feed o RSS personalizado en WordPress

1. Ve a la ruta del tema actual de tu WordPress y que comúnmente es «/wp-content/themes/tu_tema», crea un archivo PHP con el nombre que desees e insertar el siguiente código para generar un feed personalizado.

NOTA: El nombre que utilizaremos para la plantilla será «Custom Feed» como dice en la tercera línea de 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 nos vamos a la sección «Página» de WordPress y en ella agregamos una nueva página.

3) En la opción «Plantilla», deberá aparecerá la seleccionamos el que dice «Custom Feed» y guardamos la página.

4) Ahora abre la página recién creada y este se abrirá como un feed personalizado.

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

2 comentarios

  1. Jorge del Campo Andrade18 de noviembre de 2017

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

  2. Iván18 de noviembre de 2017

    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 una respuesta

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

Volver arriba