如何彻底禁用删除WordPress网站里面的RSS feed

RSS feed,在中国可能算是被淘汰的产品了,她的目的是为了让用户订阅你网站的内容,但是现在你看到有谁在用RSS feed,怕是现在的人都不晓得咋个用哦。特别是对于个人网站来说更是没啥用了。现在谁还在用RSS feed呢。只有采集器还在用了。

采集器利用RSS feed一天24小时不停的爬你的网站,复制你网站里面的文章,你辛辛苦苦写的一篇文章,一下子就被别人采集走了,你开心不。你开不开心无所谓了,这种采集器不光光采集你的文章,还造成了不必要的资源消耗,你气不气。所以我们就关闭吧。

如何关闭呢,网上一搜索很多教程,但是绝大部分教程都没啥用的,他们只是让feed页面显示错误信息,根本就不是关闭和删除。而且很多插件也都是采用这种方法,我贴出来。看看

//严重不推荐用这个代码哟
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页面,只是页面显示了错误信息,而feed功能和页面依然存在。我看有些插件集成删除feed也是用的这个代码。

那么,我们应该怎么样才能彻彻底底的删除WordPress网站里面的RSS 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();
}

将上面代码放入functions.php中后,登陆到你网站后台,随便打开一个页面,然后回到functions.php中将 flush_rewrite_rules(); 这行代码删除就可以了。

我把上面那段话加粗,说明很重要。

评论0

请先

正在汉化一个新主题,暂时还没完全搞定,但可以先看看演示。点这里
没有账号? 注册  忘记密码?