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>nombre@correo.com</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

Suscríbete por correo electrónico