Opened 17 years ago
Closed 17 years ago
#4619 closed defect (bug) (invalid)
add_feed does not generate rewrite rules
Reported by: | cavemonkey50 | Owned by: | westi |
---|---|---|---|
Milestone: | Priority: | normal | |
Severity: | normal | Version: | 2.2.1 |
Component: | Administration | Keywords: | reporter-feedback |
Focuses: | Cc: |
Description
When using the function add_feed to add a new feed type, the function is supposed to generate the correct rewrite rules to make the feed type functional. However, this does not occur in the function.
Lines 30-32 of includes/rewrite.php are supposed to handle adding the feed type to the array of feeds:
if (!in_array($feedname, $wp_rewrite->feeds)) { //override the file if it is $wp_rewrite->feeds[] = $feedname; }
However, when add_feed calls the array, the array is empty because the $wp_rewrite class has not yet been executed. Therefore, the check to see if the feed name already exists is pointless. Even though $wp_rewrite class has not been run, $wp-rewrite->feeds gets populated with the new feed names, which then could be added to the array later.
Although, adding the new feed names to the array never occurs. Line 229 then defines feed names, completely ignoring the previously added feed names.
var $feeds = array ( 'feed', 'rdf', 'rss', 'rss2', 'atom' );
So basically, the feed names never get added to the feeds array, therefore never having the correct rewrite rules generated.
Can you provide simple example code demonstrating this issue?
You should not be calling add_feed when your plugin is included but in an action on the init hook and then all will work fine.
Plugins should not really run any code at include time apart from hooking onto init (or maybe plugins_loaded) to run there initialisation code.
You cannot guarantee that WordPress has loaded and is ready for you to call it's API until the init hook fires.