Hur man skapar anpassade RSS-flöden i WordPress

Hur man skapar anpassade RSS-flöden i WordPress

WordPress levereras med inbyggda standard RSS-flöden. Du kan justera standardflödena genom att lÀgga till anpassat innehÄll i dina RSS-feeds, eller till och med lÀgga till miniatyr för inlÀgg i dina RSS-feeds. Standard RSS- och Atom-flöden rÀcker för de flesta anvÀndare, men du kanske vill skapa ett anpassat RSS-flöde för att leverera specifik typ av innehÄll. I den hÀr artikeln visar vi dig hur du skapar anpassade RSS-flöden i WordPress.

Observera att denna handledning inte Àr avsedd för WordPress-anvÀndare pÄ nybörjarnivÄ. Om du Àr nybörjare och fortfarande vill prova det, gör det pÄ en lokal installation.

Som alltid mÄste du skapa en fullstÀndig sÀkerhetskopia av din WordPress-webbplats innan du gör nÄgra större Àndringar pÄ en live-webbplats.

Med detta sagt, lÄt oss komma igÄng med ditt första anpassade RSS-flöde i WordPress.

LÄt oss anta att du vill skapa ett nytt RSS-flöde som bara visar följande information:

Titel LÀnk Publicerad Datum Författare Utdrag

Det första du behöver göra Àr att skapa det nya RSS-flödet i temas funktioner.php-fil eller i ett platsspecifikt plugin:



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


OvanstÄende kod utlöser customRSS-funktionen, som lÀgger till flödet. Funktionen add_feed har tvÄ argument, feedname och en callback-funktion. Flödesnamnet utgör din nya flödeswebbadress dindomÀn.com/feed/feedname och Äteruppringningsfunktionen kommer att anropas för att faktiskt skapa flödet. Anteckna flödesnamnet eftersom du behöver det senare.

NÀr du har initierat flödet mÄste du skapa Äteruppringningsfunktionen för att producera den önskade flödet med hjÀlp av följande kod i ditt temas funktioner.php-fil eller i ett platsspecifikt plugin:


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

Koden ovan anvÀnder funktionen get_template_part för att lÀnka till en separat mallfil, men du kan ocksÄ placera RSS-koden direkt i funktionen. Genom att anvÀnda get_template_part kan vi hÄlla funktionaliteten separat för layouten. Get_template_part-funktionen har tvÄ argument, slug och namn, som söker efter en mallfil med namnet i följande format, med början med filen högst upp (om den inte hittar den första, kommer den att gÄ vidare till den andra , och sÄ vidare):

    wp-innehÄll / teman / barn / rss-feednamn.php wp-innehÄll / teman / förÀlder / rss-feedname.php wp-innehÄll / teman / barn / rss.php wp-innehÄll / teman / förÀlder / rss.php

I denna handledning Àr det bÀst att stÀlla in snigeln till den typ av flöde du skapar (i det hÀr fallet: rss) och namnet pÄ det flödesnamn som konfigurerades tidigare.

NÀr du har sagt till WordPress att leta efter flödesmallen mÄste du skapa den. Koden nedan producerar layouten för flödet med den information som vi listade tidigare. Spara den hÀr filen i temamappen som slug-name.php-mallfilen konfigurerad i get_template_part-funktionen.


<?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>

Denna mallkod genererar ett RSS-flöde enligt ovanstÄende layout. PostCount-variabeln lÄter dig styra antalet inlÀgg som ska visas i ditt flöde. Mallen kan Àndras efter behov för att visa all information du behöver (t.ex. lÀgga upp bilder, kommentarer osv.).

Funktionen the_excerpt_rss visar utdraget för varje inlÀgg, och för inlÀgg som inte har utdrag kommer de 120 första orden av inlÀggets innehÄll att visas.

Slutligen, för att visa ditt flöde mÄste du först spola dina WordPress-omskrivningsregler. Det enklaste sÀttet att göra detta Àr genom att logga in pÄ WordPress-administratören och klicka InstÀllningar -> PermalÀnkar. NÀr du vÀl Àr hÀr klickar du bara för att spola omskrivningsreglerna.

Du kan nu komma Ät ditt nya flöde pÄ dindomÀn.com/feed/feedname, dÀr feedname var det feedname du gav i funktionen add_feed tidigare.

W3C erbjuder en feedvalideringstjÀnst, sÄ att du kan validera det resulterande flödet.

Felsökning

Mitt flöde valideras inte!

Med hjÀlp av W3C-feedvalideraren bör specifika detaljer ges dÀr ditt flöde inte valideras. Redigera matningsmallfilen för att lösa dessa problem

Jag fÄr ett valideringsfel !

Detta Àr vanligt nÀr RSS-sprÄket inte har konfigurerats för din WordPress-installation. För att göra detta kan du lÀgga till följande kod i ditt temas funktioner.php-fil för att uppdatera sprÄkalternativet.


function rssLanguage(){
        update_option('rss_language', 'en');
}
add_action('admin_init', 'rssLanguage');

Redigera det andra argumentet i funktionen update_option för att Àndra sprÄket till det du behöver. Kolla in hela listan med RSS-sprÄkkoder. NÀr ovanstÄende kod har lagts till i din funktionsfil laddar du in WordPress-administratörsskÀrmen sÄ att den trÀder i kraft. Efter detta bör koden tas bort frÄn din WordPress-funktionsfil. Att ladda det en gÄng rÀcker för att konfigurera rss_language-instÀllningen.
Detta kan ocksÄ göras direkt i databasen genom att leta efter alternativet rss_language i tabellen wp_options.

Vi hoppas att den hÀr artikeln hjÀlpte dig att skapa dina egna RSS-flöden i WordPress. LÄt oss veta hur och varför du kommer att anvÀnda anpassade RSS-flöden pÄ din WordPress-webbplats genom att lÀmna en kommentar nedan.