如何从WordPress中完全删除提要?

时间:2011-11-07 作者:Ünsal Korkmaz

我想从WordPress中完全删除提要。我正在使用来自http://wpengineer.com/287/disable-wordpress-feed/

/**
* disable feed
*/
function fb_disable_feed() {
wp_die( __(\'No feed available,please visit our <a href="\'. get_bloginfo(\'url\') .\'">homepage</a>!\') );
}
add_action(\'do_feed\', \'fb_disable_feed\', 1);
add_action(\'do_feed_rdf\', \'fb_disable_feed\', 1);
add_action(\'do_feed_rss\', \'fb_disable_feed\', 1);
add_action(\'do_feed_rss2\', \'fb_disable_feed\', 1);
add_action(\'do_feed_atom\', \'fb_disable_feed\', 1);
仍然有大量的临时选项。。喜欢_transient_feed_mod_transient_timeout_feed_mod

如何从WordPress中完全删除提要?

3 个回复
最合适的回答,由SO网友:chrisguitarguy 整理而成

第一步:从站点的部分删除提要链接。

<?php
add_action( \'wp_head\', \'wpse33072_wp_head\', 1 );
/**
 * Remove feed links from wp_head
 */
function wpse33072_wp_head()
{
    remove_action( \'wp_head\', \'feed_links\', 2 );
    remove_action( \'wp_head\', \'feed_links_extra\', 3 );
}
接下来,让我们从WP中删除提要端点。钩入init, 全球化$wp_rewrite 然后将提要设置为空数组。这有效地阻止了WordPress添加提要重写。它也是超级黑客,将来可能会在某个时候崩溃。

<?php
add_action( \'init\', \'wpse33072_kill_feed_endpoint\', 99 );
/**
 * Remove the `feed` endpoint
 */
function wpse33072_kill_feed_endpoint()
{
    // This is extremely brittle.
    // $wp_rewrite->feeds is public right now, but later versions of WP
    // might change that
    global $wp_rewrite;
    $wp_rewrite->feeds = array();
}
但是,如果它坏了,没关系,因为我们会将提要重定向到主页。

<?php
foreach( array( \'rdf\', \'rss\', \'rss2\', \'atom\' ) as $feed )
{
    add_action( \'do_feed_\' . $feed, \'wpse33072_remove_feeds\', 1 );
}
unset( $feed );
/**
 * prefect actions from firing on feeds when the `do_feed` function is 
 * called
 */
function wpse33072_remove_feeds()
{
    // redirect the feeds! don\'t just kill them
    wp_redirect( home_url(), 302 );
    exit();
}
最后一步:激活挂钩,将重写提要设置为空数组,并刷新重写规则。

<?php
register_activation_hook( __FILE__, \'wpse33072_activation\' );
/**
 * Activation hook
 */
function wpse33072_activation()
{
    wpse33072_kill_feed_endpoint();
    flush_rewrite_rules();
}
所有这些as a plugin.

SO网友:EAMann

你发布的代码将完全按照它所说的做-阻止任何人通过RSS提要访问你的网站。

仍然有大量的临时选项。。喜欢_transient_feed_mod_transient_timeout_feed_mod

这些临时选项与您的站点提要完全无关。默认情况下,WordPress仪表板使用多个提要,并将它们显示在管理仪表板的框中。您安装的插件可能会添加自己的提要,用于新闻显示或更新。

WordPress使用这些瞬时值来确定何时更新了这些消耗的feed。

如何从WordPress中完全删除提要?

您发布的代码已经。。。

SO网友:fregante

这应该可以

/*disable rss*/
remove_action(\'wp_head\', \'feed_links\', 2 );
add_filter(\'post_comments_feed_link\',\'bfr_disable_comments_feeds\');
function bfr_disable_comments_feeds() {
    return null;
}
更好的是,如果您至少有PHP 5.3,可以使用较短的版本:

/*disable rss, PHP 5.3+ */
remove_action(\'wp_head\', \'feed_links\', 2 );
add_filter(\'post_comments_feed_link\',function () { return null;});
另一方面,删除重写会花费更长的时间,所以除非你对性能完全着迷,否则你可以把它们留在那里。

结束

相关推荐

Redirect feed to 404 page

当我的访问者访问我页面的任何提要时,我想将他们重定向到我的404。像这样的。我可以在不更改标题URL的情况下执行此操作。function fb_disable_feed() { // set_404(); } add_action(\'do_feed\', \'fb_disable_feed\', 1); add_action(\'do_feed_rdf\', \'fb_disable_feed\', 1); add_action(\'do_fe