作者 主题: 如何彻底移除并关闭WordPress的RSS feed  (阅读 422 次)

离线 西华秦

  • 版主
  • 超级会员
  • *****
  • 帖子: 2235
  • 评价: +5/-214
    • 查看个人资料
    • 烙印
如何彻底移除并关闭WordPress的RSS feed
« 于: 五月 25, 2017, 02:28:41 下午 »
WordPress默认开启了feed功能,好处不言而喻,可以方便RSS阅读器进行订阅,让读者及时收到博客的更新信息。但有些博客基本没有人订阅,却有一堆机器人来采集博客的feed,方便了别人复制你的文章不说,还造成了不必要的资源消耗。
阻止采集feed的方式很多,比如feed中只输出文章摘要,而不输出全文,这个在WordPress后台 - 设置 - 阅读中就可以设置。但是我出于某些目的,并不完全是为了防采集,不想开放博客的feed功能,该怎么设置呢?
简单搜索了一下,发现网上都是下面这个方法,直接在主题的functions.php中加入下面的代码:

程序代码: [选择]
// 删除 wp_head 输入到模板中的feed地址链接
add_action( 'wp_head', 'wpse33072_wp_head', 1 );
function wpse33072_wp_head() {
    remove_action( 'wp_head', 'feed_links', 2 );
    remove_action( 'wp_head', 'feed_links_extra', 3 );
}

foreach( array( 'rdf', 'rss', 'rss2', 'atom' ) as $feed ) {
    add_action( 'do_feed_' . $feed, 'wpse33072_remove_feeds', 1 );
}
unset( $feed );

// 当执行 do_feed action 时重定向到首页
function wpse33072_remove_feeds() {
    wp_redirect( home_url(), 302 );
    exit();
}

// 删除feed的重定向规则
add_action( 'init', 'wpse33072_kill_feed_endpoint', 99 );

function wpse33072_kill_feed_endpoint() {
    global $wp_rewrite;
    $wp_rewrite->feeds = array();
   
    // 运行一次后,记得删除下面的代码
    flush_rewrite_rules();
}

将以上php代码放入当前主题的functions.php中,然后登陆进入WordPress后台,随便打开一个页面,然后回来在主题的functions.php中将:
程序代码: [选择]
flush_rewrite_rules(); 这行代码删除即可。

离线 iamwf

  • 总版主
  • 中级会员
  • *****
  • 帖子: 2110
  • 评价: +12/-291
  • 泛美开矿工人联合会
    • 查看个人资料
Re: 如何彻底移除并关闭WordPress的RSS feed
« 回复 #1 于: 五月 25, 2017, 05:21:11 下午 »
官方应该加个开关。

离线 文艺青年

  • 会员
  • *
  • 帖子: 299
  • 评价: +0/-3
    • 查看个人资料
Re: 如何彻底移除并关闭WordPress的RSS feed
« 回复 #2 于: 九月 01, 2017, 10:27:00 下午 »
 ::) 研究下,删除有什么好处么

离线 jitler

  • 中级会员
  • ***
  • 帖子: 1836
  • 评价: +2/-13
  • 性别男,爱好女。
    • 查看个人资料
    • 江南博客
Re: 如何彻底移除并关闭WordPress的RSS feed
« 回复 #3 于: 九月 02, 2017, 01:43:10 下午 »
把RSS feed那个php文件改个名字
江南网志
我不支持的言论,但我坚决捍卫你发言的权利!

离线 文艺青年

  • 会员
  • *
  • 帖子: 299
  • 评价: +0/-3
    • 查看个人资料
Re: 如何彻底移除并关闭WordPress的RSS feed
« 回复 #4 于: 十一月 06, 2017, 10:11:02 上午 »
有插件的吧这个