2

I'd like to customize my WordPress blog in such a way that it is no more possible to access the comments feed.

Other feeds should still be available, and it should still be possible to add comments to any article.

I tried to find a plugin to do this, but what I found is a all or nothing feature, without the possibility to finely adjust which feeds are allowed and which are not.

  • Just want to add a reasoning for this: Having them enabled means that scrapers like Google/Bing/Yandex/etc. are constantly querying for both every article on my site (hundreds of thousands) AND their /feed/ URLs. This is a huge burden on the server and a huge waste of resources to serve these files which are almost ever relevant and unlikely to be used meaningfully but readers (who can subscribe by email if they want to). – jerclarke Mar 5 at 16:45
  • Related: How to disable the comments feed entirely with wp_die(): wordpress.stackexchange.com/questions/45941/… – jerclarke Mar 21 at 0:56
5
function remove_comment_feeds( $for_comments ){
    if( $for_comments ){
        remove_action( 'do_feed_rss2', 'do_feed_rss2', 10, 1 );
        remove_action( 'do_feed_atom', 'do_feed_atom', 10, 1 );
    }
}
add_action( 'do_feed_rss2', 'remove_comment_feeds', 9, 1 );
add_action( 'do_feed_atom', 'remove_comment_feeds', 9, 1 );
|improve this answer|||||
  • Am I missing something? How/where does $for_comments get defined? – Pat J Dec 11 '13 at 21:01
  • This is the original callback - do_action( $hook, $wp_query->is_comment_feed ), where it serve the variable $comments in the hooked function. – Shazzad Dec 11 '13 at 21:04
  • Yeah, I just read the snippet on the Action Reference page under do_feed_$feed: Action function argument: true (the feed is for comments) or false (it is for posts). – Pat J Dec 11 '13 at 21:05
  • 1
    active themes functions.php file, or in an active plugin file. – Shazzad Dec 11 '13 at 21:09
  • 1
    This isn't good. /feed still returns 200OK and the link to /feed still shows up on the post source. – Michael Rogers Dec 22 '19 at 1:41
5

As mentioned by @glueckpress, Since 4.4 you can use the feed_links_show_comments_feed filter.

Example (in your theme functions.php file) :

add_action( 'after_setup_theme', 'head_cleanup' );

function head_cleanup(){

    // Add default posts and comments RSS feed links to head.
    add_theme_support( 'automatic-feed-links' );

    // disable comments feed
    add_filter( 'feed_links_show_comments_feed', '__return_false' ); 

}
|improve this answer|||||
  • 3
    Note that there's also the core __return_false() function available. – birgire Feb 25 '16 at 0:04
  • No effect whatsoever. – Michael Rogers Dec 22 '19 at 1:42
  • This worked for me to do the following: Hide the site.com/comments feed from being inserted into the header. It didn't hide the individual-post comments feeds that were in the header (site.com/posturl/comments/) in case that's what anyone was expecting (it's what I was looking for). – jerclarke Mar 21 at 0:02
  • Related: How to disable the comments feed entirely with wp_die(): wordpress.stackexchange.com/questions/45941/… – jerclarke Mar 21 at 0:56
1

@Shazzad’s approach seems to not work when current_theme_supports( 'automatic-feed-links' ), because up to 4.3 WordPress seems to be pretty ego about feed links. You would have to remove_action( 'wp_head', 'feed_links', 2 ) hard and add your own function printing only the link for post feeds.

However, from 4.4 this seems to get easier with a brand-new filter: feed_links_show_posts_feed.

|improve this answer|||||

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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