Cómo crear un feed RSS personalizado en WordPress

WordPress viene con fuentes RSS predeterminadas incorporadas. Puede modificar las fuentes predeterminadas agregando contenido personalizado a sus fuentes RSS, o incluso agregando miniaturas de publicaciones a sus fuentes RSS. Las fuentes RSS y Atom predeterminadas son suficientes para la mayoría de los usuarios, pero es posible que desee crear una fuente RSS personalizada para entregar un tipo específico de contenido. En este artículo, le mostraremos cómo crear fuentes RSS personalizadas en WordPress.

Tenga en cuenta que este tutorial no está destinado a usuarios principiantes de WordPress. Si es un principiante y aún desea probarlo, hágalo en una instalación local.

Como siempre, debe crear una copia de seguridad completa de su sitio web de WordPress antes de realizar cambios importantes en un sitio web en vivo.

Dicho esto, comencemos con su primer feed RSS personalizado en WordPress.

Supongamos que desea crear una nueva fuente RSS que muestre solo la siguiente información:

  • Título
  • Enlace
  • Fecha de Publicación
  • Autor
  • Extracto

Lo primero que debe hacer es crear la nueva fuente RSS en el functions.php archivo o en un complemento específico del sitio:


add_action('init', 'customRSS');
function customRSS(){
        add_feed('feedname', 'customRSSFunc');
}

El código anterior activa el customRSS función, que agrega el feed. La función add_feed tiene dos argumentos, feedname y una función de devolución de llamada. El nombre de la fuente formará su nueva URL de la fuente. yourdomain.com/feed/feedname y se llamará a la función de devolución de llamada para crear realmente el feed. Anote el nombre del feed, ya que lo necesitará más adelante.

Una vez que haya inicializado la fuente, deberá crear la función de devolución de llamada para producir la fuente requerida, utilizando el siguiente código en su tema functions.php archivo o en un complemento específico del sitio:

function customRSSFunc(){
        get_template_part('rss', 'feedname');
}

El código anterior usa el get_template_part función para vincular a un archivo de plantilla separado, sin embargo, también puede colocar el código RSS directamente en la función. Mediante el uso get_template_part, podemos mantener la funcionalidad separada del diseño. La get_template_part La función tiene dos argumentos, slug y name, que buscarán un archivo de plantilla con el nombre en el siguiente formato, comenzando con el archivo en la parte superior (si no encuentra el primero, pasará al segundo, y pronto):

  1. wp-content/themes/child/rss-feedname.php
  2. wp-content/themes/parent/rss-feedname.php
  3. wp-content/themes/child/rss.php
  4. wp-content/themes/parent/rss.php

Para los propósitos de este tutorial, es mejor configurar el slug para el tipo de feed que está creando (en este caso: rss) y el nombre para el feedname configurado anteriormente.

Una vez que le haya dicho a WordPress que busque la plantilla de fuente, deberá crearla. El siguiente código producirá el diseño del feed con la información que enumeramos anteriormente. Guarde este archivo en su carpeta de temas como el archivo de plantilla slug-name.php configurado en el get_template_part función.

<?php
/**
 * Template Name: Custom RSS Template - Feedname
 */
$postCount = 5; // The number of posts to show in the feed
$posts = query_posts('showposts=" . $postCount);
header("Content-Type: '.feed_content_type('rss-http').'; charset=".get_option("blog_charset'), true);
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'); ?> - Feed</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 while(have_posts()) : the_post(); ?>
                <item>
                        <title><?php the_title_rss(); ?></title>
                        <link><?php the_permalink_rss(); ?></link>
                        <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>
                        <guid isPermaLink="false"><?php the_guid(); ?></guid>
                        <description><![CDATA[<?php the_excerpt_rss() ?>]]></description>
                        <content:encoded><![CDATA[<?php the_excerpt_rss() ?>]]></content:encoded>
                        <?php rss_enclosure(); ?>
                        <?php do_action('rss2_item'); ?>
                </item>
        <?php endwhile; ?>
</channel>
</rss>

Este código de plantilla generará una fuente RSS siguiendo el diseño anterior. La postCount La variable te permite controlar la cantidad de publicaciones que se mostrarán en tu feed. La plantilla se puede modificar según sea necesario para mostrar cualquier información que necesite (por ejemplo, publicar imágenes, comentarios, etc.).

La the_excerpt_rss La función mostrará el extracto de cada publicación, y para las publicaciones que no tengan extractos, mostrará las primeras 120 palabras del contenido de la publicación.

Finalmente, para mostrar su feed, primero deberá eliminar las reglas de reescritura de WordPress. La forma más sencilla de hacerlo es iniciando sesión en el administrador de WordPress y haciendo clic en Configuración -> Enlaces permanentes. Una vez aquí, simplemente haga clic en Guardar cambios, que eliminará las reglas de reescritura.

Ahora puede acceder a su nuevo feed en yourdomain.com/feed/feedname, donde feedname era el nombre de feed que proporcionó en el add_feed funcionar antes.

El W3C ofrece una servicio de validación de feeds, lo que le permite validar el feed resultante.

Solución de problemas

  • ¡Mi feed no se está validando!

    • Con el validador de feeds del W3C, se deben proporcionar detalles específicos cuando su feed no se esté validando. Edite el archivo de plantilla de feed para resolver estos problemas
  • ¡Recibo un error de validación de !

    • Esto es común cuando el idioma RSS no se ha configurado en su instalación de WordPress. Para hacer esto, puede agregar el siguiente código a su tema functions.php archivo, para actualizar la opción de idioma.
    function rssLanguage(){
            update_option('rss_language', 'en');
    }
    add_action('admin_init', 'rssLanguage');
    
  • Edite el segundo argumento de la función update_option para cambiar el idioma al que necesite. Consulte la lista completa de Códigos de idioma RSS.
  • Una vez que se haya agregado el código anterior a su archivo de funciones, cargue la pantalla de administración de WordPress para que surta efecto. Después de esto, el código debe eliminarse de su archivo de funciones de WordPress. Cargarlo una vez es suficiente para configurar el ajuste rss_language.
  • Esto también se puede hacer directamente en la base de datos, buscando la opción rss_language en la tabla wp_options.
  • Esperamos que este artículo le haya ayudado a crear sus propias fuentes RSS personalizadas en WordPress. Háganos saber cómo y por qué utilizará fuentes RSS personalizadas en su sitio de WordPress dejando un comentario a continuación.

    Deja un comentario