Custom RSS feeds in WordPress
I use FeedBurner to track all my feed subscribers, but sometimes I want to provide a different feed to other people (without my feed signature for instance, or using excerpts instead of full feeds).
Now when you use FeedBurner’s Feedsmith plugin, this’ll redirect all of your normal feeds to FeedBurner, and that’s a smart thing to do: you don’t want to give those custom feeds to people they aren’t meant for.
There’s an easy solution though, just follow these steps:
- create a custom page template within your theme that serves out the feed (code below)
- create a new page (which can be blank), with a secret URL
- use your newly created “Custom Feed” template for that page
- open the secret URL in your browser and voila: your custom feed is ready
The template should look something like this:
<?php /* Template Name: Custom Feed */ $numposts = 5; 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>Yoast E-mail Update</title> <link>http://yoast.com/</link> <description>The latest blog posts from Yoast.com.</description> <language>en-us</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>joost@yoast.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>
This is a post from Joost de Valk's Yoast – Tweaking Websites.
Want to make sure you’re trying just as hard or harder as your competitors to rank in the search engines? Use SEO SpyGlass to determine their linking strategies!
No related posts.