﻿id,summary,reporter,owner,description,type,status,priority,milestone,component,version,severity,resolution,keywords,cc
14922,Invalid Custom RSS Feed for Custom Post Type without a regular Post,actionnerd,,"Adding a custom feed for a Custom Post Type via:


{{{
	//!shiny new rss feeds
	function create_eventsfeed() {
		load_template( TEMPLATEPATH . '/feeds/events.php');
	}
	add_feed('events', 'create_eventsfeed');
}}}


(also tried using ""add_action('do_feed_events', 'create_eventsfeed', 10, 1);"")

The feed generated does have content according to feedvalidator.org but also returns 404 Page Not Found. Adding the feed to the feed reader results in a broken feed that it can't connect to.

However, if I add a single Post (having previously moved the ""Hello World!"" post to the trash), the generated feed works even though it has nothing to do with Posts as it only draws from a Custom Post Type. As far as I could figure, Custom RSS Feeds for Custom Post Types can only be generated if there are also regular Posts, even if they are mutually exclusive.

Here's the code I used for the RSS Feed template (taken directly from Wordpress — I know Future posts are technically bad for RSS Feeds but it didn't work without that either):


{{{
<?php
/**
 * RSS2 Feed Template for displaying RSS2 Posts feed.
 *
 * @package WordPress
 */

header('Content-Type: ' . feed_content_type('rss-http') . '; charset=' . get_option('blog_charset'), true);
$more = 1;

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'); wp_title_rss(); ?></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
		$eventsQuery = new WP_Query(""post_type=events&post_status=publish,future"");
		while ($eventsQuery->have_posts()) : $eventsQuery->the_post();
	
	?>	<item>
		<title><?php the_title_rss() ?></title>
		<link><?php the_permalink_rss() ?></link>
		<comments><?php comments_link_feed(); ?></comments>
		<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>
		<?php the_category_rss() ?>

		<guid isPermaLink=""false""><?php the_guid(); ?></guid>
<?php if (get_option('rss_use_excerpt')) : ?>
		<description><![CDATA[<?php the_excerpt_rss() ?>]]></description>
<?php else : ?>
		<description><![CDATA[<?php the_excerpt_rss() ?>]]></description>
	<?php if ( strlen( $post->post_content ) > 0 ) : ?>
		<content:encoded><![CDATA[<?php the_content_feed('rss2') ?>]]></content:encoded>
	<?php else : ?>
		<content:encoded><![CDATA[<?php the_excerpt_rss() ?>]]></content:encoded>
	<?php endif; ?>
<?php endif; ?>
		<wfw:commentRss><?php echo esc_url( get_post_comments_feed_link(null, 'rss2') ); ?></wfw:commentRss>
		<slash:comments><?php echo get_comments_number(); ?></slash:comments>
<?php rss_enclosure(); ?>
	<?php do_action('rss2_item'); ?>
	</item>
	<?php endwhile; ?>
</channel>
</rss>

}}}


",defect (bug),closed,normal,3.1,Feeds,3.0.1,normal,fixed,,aaroncampbell
