屏蔽wordpress RSS订阅Feed接口代码

Feed订阅曾一度非常流行,很多大小中型网站博客会在网站显眼位置添加一个订阅图标以及被订阅数量,不过现在基本没有多少用户使用,第三方阅读器网站基本也关闭了服务,继续保留Feed已经没有多大价值,反而会被人利用于采集内容,造成服务器资源消耗,因此有格道已经关闭了Feed。

wordpress屏蔽Feed代码:

把下面的代码添加到主题的functions.php文件

1、不开放RSS功能

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);

2、彻底关闭

// 删除 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();
}

保存文件即可。

本站长比较喜欢第二种。

测试是否成功,可以在浏览器地址输入https://域名/feed 查看

 

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧