如何彻底移除并关闭WordPress的RSS feed

日期: 标签:WordPress教程
如需帮忙改代码,或者WordPress二次开发、PHP网站建设等需求,可联系我购买付费服务:  点此联系我

WordPress默认开启了feed功能,好处不言而喻,可以方便RSS阅读器进行订阅,让读者及时收到博客的更新信息。但有些博客基本没有人订阅,却有一堆机器人来采集博客的feed,方便了别人复制你的文章不说,还造成了不必要的资源消耗。

阻止采集feed的方式很多,比如feed中只输出文章摘要,而不输出全文,这个在WordPress后台 - 设置 - 阅读中就可以设置。但是我出于某些目的,并不完全是为了防采集,不想开放博客的feed功能,该怎么设置呢?

简单搜索了一下,发现网上都是下面这个方法,直接在主题的functions.php中加入下面的代码:

function disable_all_feeds() {
   wp_die( '本站不提供feed' );
}
add_action('do_feed', 'disable_all_feeds', 1);
add_action('do_feed_rdf', 'disable_all_feeds', 1);
add_action('do_feed_rss', 'disable_all_feeds', 1);
add_action('do_feed_rss2', 'disable_all_feeds', 1);
add_action('do_feed_atom', 'disable_all_feeds', 1);

这种方法实现的效果是,当你打开博客的feed地址(如https://www.ludou.org/feed)时,页面会直接显示设置的错误信息,feed代码已经被删除,也就是说这个feed地址仍然存在,而不是打开这个链接直接显示404。

代码版

如何才能彻彻底底地禁用WordPress的feed功能,连渣都不剩呢?我们可以使用下面的代码:

// 删除 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(); 这行代码删除即可。

插件版

点此下载插件

下载后解压,将remove-feeds目录通过ftp上传到网站的wp-content/plugins目录,然后在WordPress后台 - 插件中,启用这个插件即可: Remove All feeds [for WPSE33072]

讲在最后

本文只是提供了WordPress禁用feed的方法,并不说明本站已经禁用了feed,本站的feed还是正常提供的,欢迎大家订阅!

订阅地址是:https://www.ludou.org/feed

-- 完 --

本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:
原文出处:露兜即刻 https://www.ludou.org/how-to-remove-feeds-from-wordpress-totally.html
露兜
kaapass@outlook.com  QQ 825533758

业余编程爱好者。

20 条留言

点此留言
  1. 禾苗轩

    感谢无私分享,这是一个一直想知道的难题,没想到这么轻松

  2. 红领巾 红领巾

    这这这..太彻底了。

  3. 明月登楼 明月登楼

    这样禁用以后会影响WordPress手机客户端的使用的好像,我现在就是手机客户端不能上传文档,只能审核、回复评论了!

  4. 露兜

    @明月登楼 这个功能只禁用feed,理论上不影响WordPress手机客户端,因为WordPress手机客户端用的是XMLRPC,没禁用XMLRPC应该没影响。
    没用过WordPress手机客户端,你可以自己添加或删除文中的代码后试试。

  5. 明月登楼 明月登楼

    @露兜 不错,我的feed还是有用处的,所以我一般都不会关闭feed!

  6. 明明月登楼学习Blog 明明月登楼学习Blog

    呵呵,携我的Typecho博客过来露个脸!

  7. 极客坊 极客坊

    楼主高招,学习了!

  8. 龙笑天 龙笑天

    现在没有好的RSS阅读器啊~

  9. WordPress头条 WordPress头条

    很全面,不过Feed还是很有用的功能。

  10. 虾米 虾米

    弱弱的问句博主,用的什么地方的空间,速度好快啊,还有这个https 博主是免费的还是收费的 怎么弄的 求教一下。

  11. 露兜

    @虾米 腾讯云服务器,不介意可以使用我的推广链接进行注册:http://t.cn/R6pkwki
    腾讯云也有免费的https

  12. 露兜粉丝

    露兜啊…………

  13. yearliny yearliny

    最近老被爬虫访问feed,露兜没有禁用feed,有什么阻止爬虫的高招吗?这个爬虫自动切换header和IP,作为新手实在没啥办法。

  14. uuu

    谢谢 收藏了

  15. 小神仙 小神仙

    正需要,试了一下还挺不错

  16. 阿木

    我的网站别的feed打开都能正常显示XML代码。最近在谷歌站长工具那边提示了很多feed结尾的404错误页面,然后把feed去掉显示出来是一张图片。这问题要怎么解决?求大神指点下迷津。

  17. viet viet

    提示了很多feed结尾的404错误页面,然后把feed去掉显示出来是一张图片。这问题要怎么解决?

  18. 魏艾斯笔记 魏艾斯笔记

    feed和rss吧,现在用的人少了,而且容易被采集。你说屏蔽了的话,搜索引擎会给你个通知说屏蔽了,有点纠结。

  19. 魏艾斯笔记 魏艾斯笔记

    关闭了rss,feed之后,在百度搜索资源平台出现 链接异常,服务器抓取错误的提示,url就是 rss和feed,这样应该怎么办呢? 去提交死链吗?

  20. 王光卫博客 王光卫博客

    今天才发现我的rss功能没打开

发表留言