1. <div id="11111"></div>

    1. <div id="11111"></div>

      1. <div id="11111"></div>

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

        日期: 标签:WordPress教程 17 条留言
        如需帮忙改代码,或者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地址(如http://www.szeverich.net.cn/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还是正常提供的,欢迎大家订阅!

        订阅地址是:http://www.szeverich.net.cn/feed

        -- 完 --

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

        业余编程爱好者,主业是淘宝店主,卖些工艺品,感兴趣可以到我的淘宝店看看(旺旺不提供技术咨询):西西弗sisyphe

        17 条留言

        点此留言
        1. 禾苗轩

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

        2. 红领巾

          这这这..太彻底了。

        3. 明月登楼

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

          • 露兜

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

            • 明月登楼

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

        4. 明明月登楼学习Blog

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

        5. 极客坊

          楼主高招,学习了!

        6. 龙笑天

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

        7. WordPress头条

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

        8. 虾米

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

        9. 露兜粉丝

          露兜啊…………

        10. yearliny

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

        11. uuu

          谢谢 收藏了

        12. 小神仙

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

        13. 阿木

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

        14. viet

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

        发表留言

        可以挣钱的游戏 951| 112| 860| 335| 971| 685| 191| 401| 805| 871| 161| 946| 600| 855| 824| 237| 130| 454| 735| 225| 810| 847| 712| 813| 770| 109| 339| 927| 649| 538| 518| 978| 475| 29| 639| 768|