WordPress feed功能可以进行RSS阅读器订阅,让读者实时接收博客的更新内容。但rss在国内及当前的访客中并不普及,而且会有机器人来采集复制你的文章feed,造成不必要的资源消耗。
关闭wordpress feed的方式很多,如在WordPress后台 – 设置 – 阅读中设置,只输出文章摘要不输出全文。
我们可以直接在主题的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地址时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();
}
Comments | NOTHING