admin管理员组文章数量:1291348
I want to completely remove feeds from WordPress. I am using this little function from /
/**
* 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);
Still there is tons of transient options.. like _transient_feed_mod
or _transient_timeout_feed_mod
How can i completely remove feeds from WordPress?
I want to completely remove feeds from WordPress. I am using this little function from http://wpengineer/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);
Still there is tons of transient options.. like _transient_feed_mod
or _transient_timeout_feed_mod
How can i completely remove feeds from WordPress?
Share Improve this question asked Nov 7, 2011 at 9:42 Ünsal KorkmazÜnsal Korkmaz 1,3282 gold badges24 silver badges44 bronze badges 3- and tons of rewrite for feeds too.. those are in everywhere! – Ünsal Korkmaz Commented Nov 7, 2011 at 9:44
- curiously if you dont mind me asking ... why do you want to remove feeds from wordpress? – Nicole Commented Nov 7, 2011 at 14:15
- why should i need feeds in WordPress if i am not using it for blogging? – Ünsal Korkmaz Commented Nov 7, 2011 at 17:13
3 Answers
Reset to default 18First step: remove the feed links from the section of your site.
<?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 );
}
Next up, let's remove the feed endpoints from WP. Hook into init
, globalize $wp_rewrite
then set the feeds to an empty array. This effectively stops WordPress from adding feed rewrites. It's also super hackish and will probably break at some point in the future.
<?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();
}
But, if it breaks, that's okay, because we'll redirect feeds to the home page.
<?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();
}
And the last step: an activation hook to set our rewrite feeds to an empty array and flush the rewrite rules.
<?php
register_activation_hook( __FILE__, 'wpse33072_activation' );
/**
* Activation hook
*/
function wpse33072_activation()
{
wpse33072_kill_feed_endpoint();
flush_rewrite_rules();
}
All that as a plugin.
The code you posted will do exactly what it says it will - prevent anyone from accessing your site via an RSS feed.
Still there is tons of transient options.. like
_transient_feed_mod
or_transient_timeout_feed_mod
These transient options have absolutely nothing to do with your site feed. The WordPress dashboard consumes several feeds by default and displays them in boxes on the admin dashboard. Plugins you install might add their own feeds, either for news displays or for updates.
These transient values are used by WordPress to determine when these consumed feeds have been updated.
How can i completely remove feeds from WordPress?
The code you've posted already has ...
This should do it
/*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;
}
Better yet, if you have at least PHP 5.3 you can use a shorter version:
/*disable rss, PHP 5.3+ */
remove_action('wp_head', 'feed_links', 2 );
add_filter('post_comments_feed_link',function () { return null;});
Removing rewrites, on the other hand, would take a lot longer, so unless you're totally nuts about performance you can leave them there.
本文标签: How to remove feeds from WordPress totally
版权声明:本文标题:How to remove feeds from WordPress totally? 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741528264a2383599.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论