摘要:WordPress feed功能可以进行RSS阅读器订阅,让读者实时接收博客的更新内容。但rss在国内及当前的访客中并不...
WordPress feed功能可以进行RSS阅读器订阅,让读者实时接收博客的更新内容。但rss在国内及当前的访客中并不普及,而且会有机器人来采集复制你的文章feed,造成不必要的资源消耗。
关闭wordpress feed的方式很多,如在WordPress后台 – 设置 – 阅读中设置,只输出文章摘要不输出全文。
不想开放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);
1
2
3
4
5
6
7
8
functiondisable_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地址仍然存在,而不是打开这个链接直接显示404。会直接显示设置的错误信息。
如何彻底移除并关闭WordPress的RSS feed代码版
如何才能彻底地禁用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();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// 删除 wp_head 输入到模板中的feed地址链接
add_action('wp_head','wpse33072_wp_head',1);
functionwpse33072_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 时重定向到首页
functionwpse33072_remove_feeds(){
wp_redirect(home_url(),302);
exit();
}
// 删除feed的重定向规则
add_action('init','wpse33072_kill_feed_endpoint',99);
functionwpse33072_kill_feed_endpoint(){
global$wp_rewrite;
$wp_rewrite->feeds=array();
// 运行一次后,记得删除下面的代码
flush_rewrite_rules();
}
将以上函数代码放入当前主题的functions.php中即可。