关闭wordpress 中程序默认的RSS feed功能

发布于 2021-11-25  446 次阅读


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

文章搬运于:http://www.wazhuti.com/2458.html