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からフィードを完全に削除する方法
最初のステップ:あなたのサイトのセクションからフィードリンクを削除してください。
<?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();
}
すべて - プラグインとして 。
あなたが投稿したコードは、それが言うとおりに動作します - 誰もがRSSフィードを介してあなたのサイトにアクセスするのを防ぎます。
それでも
_transient_feed_mod
や_transient_timeout_feed_mod
のようなたくさんの一時的なオプションがあります。
これらの一時的なオプションは、サイトフィードとはまったく関係ありません。 WordPressダッシュボード を消費します デフォルトで複数のフィードを表示し、管理ダッシュボードのボックスにそれらを表示します。あなたがインストールするプラグインは、ニュース表示や更新のために、それら自身のフィードを追加するかもしれません。
これらの一時的な値は、これらの 消費された フィードがいつ更新されたかを判断するためにWordPressによって使用されます。
WordPressからフィードを完全に削除する方法
あなたが投稿したコードはすでに持っています...
これはそれをするべきです
/*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;});
一方、書き換えを削除すると、かなり時間がかかるため、パフォーマンスを完全に理解できていない限り、そのままにしておくことができます。