WordPress feed功能可以进行RSS阅读器订阅,让读者实时接收博客的更新内容。但rss在国内及当前的访客中并不普及,而且会有机器人来采集复制你的文章feed,造成不必要的资源消耗。
关闭wordpress feed的方式很多,如在WordPress后台 – 设置 – 阅读中设置,只输出文章摘要不输出全文。
不想开放wordpress博客的feed功能,该怎么设置呢?
.
我们可以直接在主题的functions.php中加入下面的代码:
1 2 3 4 5 6 7 8 |
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功能,我们可以使用下面的代码:
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 ); 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中即可。