3

I'm using add_feed() to create some custom feeds but calls to is_singular(), is_home() etc... just don't seem to work within the callback. Is there a workaround for this?

Example code:

add_action( 'init', 'my_init' );
function my_init() {    
    add_feed( 'new_feed', 'feed_output' );
}

function feed_output() {
    if ( is_home() )
        load_template( '/path/to/feed/home/template.php' );
    else
        load_template( '/path/to/feed/template.php' );
}

I've added a trac ticket for this too.

1 Answer 1

1

You can only use conditional tags after the posts_selection action hook has run.

According to the codex article on add_feed it should be called with the init action, which runs before. Now I don't know when and how you run it, because you don't say so in the above example, but I'd assume you do it before posts_selection - that would explain your dilemma anyway.

3
  • Thanks, I've added the context - I am actually calling it on init as the codex suggests. wp_head would be way too late as the output from the theme would already be rendering. Didn't seem to work on the wp action either... Commented Sep 28, 2012 at 18:37
  • Well tough luck, I guess. Then, as far as I see it, it just is impossible to use add/remove feeds based on conditional tags. Since wp_head is too late and wp doesn't cut it either, I removed my suggested yet untested way of handling things. The rest of the answer should still apply, I suppose. Commented Sep 28, 2012 at 18:54
  • Yeah, had a reply on the trac ticket. Apparently it doesn't make sense to return true for is_home etc... on a feed even though the feed changes with context... Commented Oct 1, 2012 at 11:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.