禁用关闭删除WordPress的RSS Feed图文教程

大家都知道,WordPress都是默认开启了Feed功能,主要是方便RSS阅读器进行订阅,让读者及时收到博客的更新信息。但却带来了一堆机器人来采集自己的站点Feed,非常烦。对于国内使用Feed功能不多的站点来说,禁用并删除WordPress的RSS Feed是最理想不过的。

阻止采集Feed的方式很多,比如Feed中只输出文章摘要,而不输出全文,这个在WordPress后台 – 设置 – 阅读中就可以设置。但是我直接就不想要Feed功能,主要是防止别人采集自己,减轻负载。这里搬主题就分享一下禁用关闭删除WordPress的RSS Feed图文教程。

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

function disable_all_feeds() {
   wp_die( '本站不提供feed,请直接前往www.banzhuti.com站点' );
}
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.xxx.com/feed)时,页面会直接显示设置的错误信息,Feed代码已经被删除。

代码版

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

// 删除 wp_head 输入到模板中的feed地址链接
add_action( 'wp_head', 'banzhuti_wp_head', 1 );
function banzhuti_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, 'banzhuti_remove_feeds', 1 );
}
unset( $feed );

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

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

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

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

插件版

点此下载插件

下载后解压,将Remove RSS Feed目录通过ftp上传到网站的wp-content/plugins目录,然后在WordPress后台 – 插件中,启用这个插件即可: Remove RSS Feed

千百度
© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容