WordPressのRSSフィード配信を停止する方法(投稿タイプ・コメント・タクソノミー・投稿者・検索結果)

WordPressのRSSフィード配信を停止する方法(投稿タイプ・コメント・タクソノミー・投稿者・検索結果)



国内最速・高安定の高性能レンタルサーバー【ConoHa WING】

WordPressは標準で以下のRSSフィードを配信しています。

投稿
http://example.com/feed/
コメント
http://example.com/comments/feed/
投稿別コメント(投稿名:hello-world)
http://example.com/hello-world/feed/
カテゴリー(カテゴリー名:info)
http://www.example.com/category/info/feed/
タグ(タグ名:php)
http://www.example.com/tag/php/feed/
投稿タイプ(投稿タイプ名:news)
http://example.com/feed/?post_type=news
カスタムタクソノミー(投稿タイプ名:news、タクソノミー名:place、ターム名:japan)
http://example.com/feed/?post_type=news&place=japan
投稿者(投稿者名:admin)
http://example.com/author/admin/feed/
検索結果(検索ワード:wordpress)
http://example.com/?s=wordpress&feed
WordPress フィード配信 - WordPress Codex 日本語版
参考
WordPress フィード配信 - WordPress Codex 日本語版

フィードは、フィードリーダーがサイトにアクセスし、新規コンテンツを自動的に探し出し、その情報を別のサイトに投稿し更新できるようにする特別なソフトウェア機能です。この機能により、ユーザーは異なるブログに投稿された最新のホットな情報を得ることができます。

フィードには何種類かあり、異なるフィードリーダーによって読み込みされます。フィードには、RSS (“Rich Site Summary” あるいは “Really Simple Syndication” とも定義される)、Atom および RDF ファイルがあります。

WordPress フィード配信 - WordPress Codex 日本語版

しかし、サイト運営によっては外部にRSSとして配信したくない場合もあろうと思います(例えばサイト上には投稿者情報は掲載していないが、外部にはそれがわかってしまうのが問題である等)。

RSSで配信される投稿リストも通常の投稿クエリと同様に

pre_get_posts

で制御します。

<?php
function disable_feed_type( $query ) {
	if ( $query->is_feed() ) {
		// 投稿(完全に全てのRSSを廃止).
		die();
		// コメント.
		if ( get_query_var( 'withcomments' ) ) {
			die();
		}
		// 投稿別コメント.
		if ( get_query_var( 'name' ) ) {
			die();
		}
		// カテゴリー.
		if ( get_query_var( 'category_name' ) ) {
			die();
		}
		// タグ.
		if ( get_query_var( 'tag' ) ) {
			die();
		}
		// 投稿タイプ(投稿タイプ名:post).
		if ( ! get_query_var( 'post_type' ) ) {
			die();
		}
		// 投稿タイプ(投稿タイプ名:news).
		if ( 'news' === get_query_var( 'post_type' ) ) {
			die();
		}
		// カスタムタクソノミー(投稿タイプ名:news、タクソノミー名:place).
		if ( 'news' === get_query_var( 'post_type' ) && get_query_var( 'place' ) ) {
			die();
		}
		// 投稿者全体.
		if ( get_query_var( 'author_name' ) ) {
			die();
		}
		// 投稿者(投稿者名:admin).
		if ( 'admin' === get_query_var( 'author_name' ) ) {
			die();
		}
		// 検索結果.
		if ( get_query_var( 's' ) ) {
			die();
		}
	}
}		
add_action( 'pre_get_posts', 'disable_feed_type' );

これでRSSフィードURLにアクセスしても配信されていないことが確認出来ると思います。

今日はここまで

コメントを残す

メールアドレスが公開されることはありません。