I’ve been a long time consumer of news feeds and spend a lot of time reading the web via 200+ feeds in Google Reader. More recently, and largely as a result of working on WriteToReply, I’ve become just as addicted to publishing feeds from any data end point I can find.
WordPress makes this quite easy for developers, providing a whole load of functions and template tags for feeds. For the rest of us, there’s also documentation which is useful is you’re wondering what kinds of feeds can be generated from a basic WordPress site.
All the examples below, assume you’re using ‘pretty URLs’. If your URLs are something like http://example.com/?p=123 then the same principles apply but you’ll use the format /?feed=feed_type i.e. http://example.com/?feed=rss2 The documentation shows full examples.
So, here are the basic content feeds. RSS is RSS version 0.92 and RDF is RSS version 1.0, if you were wondering.
http://example.com/feed/
http://example.com/feed/rss/
http://example.com/feed/rss2/
http://example.com/feed/rdf/
http://example.com/feed/atom/
It’s also pretty straightforward to create a feed from a category or tag
http://example.com/category/my_category/feed/
http://example.com/tag/my_tag/feed/
You can also create feeds from combined tags
http://example.com/tag/tag1+tag2+tag3/feed/
And we know that a feed is available for site comments
http://example.com/comments/feed/
and it’s simple to grab a feed of comments from a single post by appending /feed/ to the end of the post permalink.
http://example.com/2009/01/01/my-latest-post/feed
You can also create a feed of a single post itself, by appending '?withoutcomments=1'
to the end of the URL
http://example.com/2009/01/01/my-latest-post/feed/?withoutcomments=1
There is a feed for each author of the blog
http://example.com/author/joss/feed
but alas, as far as I know, no feed for the comments by any particular person.
You can also do something fancy with dates
http://example.com/2009/feed
http://example.com/2009/01/feed
http://example.com/2009/01/15/feed
and one of my favourite types of feed is from a search
http://example.com/?s=search_term&feed=rss2
Now all of this is well and good, but how many readers are going to know or care about constructing the various types of feeds available? Fortunately, it’s possible to make many of these feeds auto-discoverable either by adding some simple code to your theme’s header.php or installing a plugin.
By default, two feeds are auto-discoverable on your WordPress site: An atom and rss2 feed of your posts.
By using the Extra Feed Links plugin, you can make your comments, category, tag, author and search feeds autodiscoverable.
It’s also got a useful template tag that allows you to show the feed links in your theme, making the discovery of feeds even easier. I created a simple widget for the plugin to display the feed and an RSS icon in the sidebar
Here’s the code. Let me know where it could be improved as I just hacked it together from looking at other widgets.
<?php function widget_extrafeeds_register() { function widget_extrafeeds($args) { extract($args); ?> <br /> <?php echo $before_widget; echo $before_title; echo $widget_name; echo $after_title; ?> <ul class="sidebarList"> <?php extra_feed_link(); ?> <?php extra_feed_link('http://path/to/your/feed/icon/feed.png'); ?> </ul> <?php echo $after_widget; ?> <?php } register_sidebar_widget('Extra Feeds', 'widget_extrafeeds'); register_sidebar_widget('Extra Feeds','widget_extrafeeds');} add_action('init', widget_extrafeeds_register); ?>
To get this to work with the plugin, you need to add this to the very bottom of the plugin’s main.php file
// widget support require(dirname(__FILE__) . '/widget.php');
Like I said, if anyone can improve on this, do let me know. Also note that you’ll need to point the URL in the widget to a feed icon. A lot of themes include them in their /images/ directory, which makes it easy.
By using the widget or template tag, you can have these appearing on the relevant pages.
Try it by using http://writetoreply.org/tags 🙂
If you’re interested in how to add category and tag auto-discovery feeds to your theme’s source code, try adding this to your header.php
<?php if (is_category()) { ?> <link rel="alternate" type="application/atom+xml" title="<?php bloginfo('name'); ?> &raquo; <?php single_cat_title(''); ?> Atom Feed" href="<?php echo get_category_feed_link(get_query_var('cat'), 'atom'); ?>" /> <?php } ?> <?php if (is_tag()) { ?> <link rel="alternate" type="application/atom+xml" title="<?php bloginfo('name'); ?> &raquo; <?php single_tag_title(''); ?> Atom Feed" href="<?php echo get_tag_feed_link(get_query_var('tag_id'), 'atom'); ?>" /> <?php } ?> <?php if (is_category()) { ?> <link rel="alternate" type="application/rss+xml" title="<?php bloginfo('name'); ?> &raquo; <?php single_cat_title(''); ?> RSS2 Feed" href="<?php echo get_category_feed_link(get_query_var('cat'), 'rss2'); ?>" /> <?php } ?> <?php if (is_tag()) { ?> <link rel="alternate" type="application/rss+xml" title="<?php bloginfo('name'); ?> &raquo; <?php single_tag_title(''); ?> RSS2 Feed" href="<?php echo get_tag_feed_link(get_query_var('tag_id'), 'rss2'); ?>" /> <?php } ?> <?php if (is_category()) { ?> <link rel="alternate" type="application/rdf+xml" title="<?php bloginfo('name'); ?> &raquo; <?php single_cat_title(''); ?> as RDF data" href="<?php echo get_category_feed_link(get_query_var('cat'), 'rdf'); ?>" /> <?php } ?> <?php if (is_tag()) { ?> <link rel="alternate" type="application/rdf+xml" title="<?php bloginfo('name'); ?> &raquo; <?php single_tag_title(''); ?> as RDF data" href="<?php echo get_tag_feed_link(get_query_var('tag_id'), 'rdf'); ?>" /> <?php } ?>
I learned this from the author of this related plugin, which is similar but not quite as powerful as the Extra Feed Links plugin.
Finally, if you use FeedBurner, beware that it breaks some of the above feeds. One fix for ensuring that tag and category feeds continue to work as they should is to modify the FeedBurnerFeedSmith plugin as noted here. Simply change the line
is_feed() && $feed != 'comments-rss2' && !is_single() &&
to read
is_feed() && $feed != 'comments-rss2' && !is_single() && !is_tag() &&
That’ll do for now. I intend to learn more about the RSS and Atom specifications over the next few weeks and will post anything I think relevant here. If you can add anything to this post, please do leave a comment. Thanks.
Another cool one I discovered yesterday is author feeds, where you can get an author’s posts out of a wordpress blog with this feed:
http://myblog.com/author/author_name/feed
Very useful for feeding out of a group blog into a profolio of sorts.
Oops, I now see you already have it there, my bad!
Great post very useful info.
Useful info, thanks a bunch!
Just wanted to point out that it is possible to combine category and tags to create a feed. It’s currently a patch but looks likely to end up in version 2.8 or 2.9:
http://core.trac.wordpress.org/ticket/5433
Feeds can also be manipulated through template tags: http://codex.wordpress.org/Template_Tags/query_posts
i.e. http://baselinescenario.com/2008/09/feed/?orderby=post_date&order=ASC