こんにちは、WPホームページ研究所の運営サポートチーム(@WP_LABO)です。
会員制ウェブサイトを運営しているとRSSフィードを使いたくない場面があります。特にできるだけ外部へ情報を漏らしたくないシチュエーションではRSS配信されると困るので無効化するのがおすすめです。
RSSフィードを無効にする方法
ワードプレスでは標準でさまざまな形式のRSSが配信されています。RSSは裏側の仕組みなので特定のサービスと連携して読み込まれています。システム向けの形式なので通常運営ではあまり見かけないはずです。カンタンにざっと洗い出すと下記のRSSが出力されています。個別の投稿記事用やコメント用もあります。
https://example.com/feed/rdf/
https://example.com/feed/rss/
https://example.com/feed/
https://example.com/feed/atom/
https://example.com/comments/feed/
https://example.com/hello-world/feed/
会員サイトではRSSに含まれている情報から記事内容が漏れることがあるので注意が必要です。
// RSSフィードを停止する
remove_action('do_feed_rdf', 'do_feed_rdf');
remove_action('do_feed_rss', 'do_feed_rss');
remove_action('do_feed_rss2', 'do_feed_rss2');
remove_action('do_feed_atom', 'do_feed_atom');
上記をfunctions.phpに追記すると各RSSファイルが無効化されます。
併せてヘッダー出力を止める方法が下記。
// RSSフィードのリンクを取り除く
remove_action('wp_head', 'feed_links', 2);
remove_action('wp_head', 'feed_links_extra', 3);
もしエラー画面で404を返したい場合は「.htaccess」の先頭に下記を追記(必須ではありません)すればOK。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{THE_REQUEST} feed [NC]
RewriteRule ^ - [L,R=404]
</IfModule>
追記後はエラー画面が「404 Not Found」に変わります。
さらにガードを高めるならRSS配信の設定を最小限に抑えておくのがおすすめです。管理画面の「設定 > 表示設定 > RSS/Atom フィードで表示する最新の投稿数」を1にして含める内容は抜粋側に変更すればOK。
念のためにプラグインもご用意しているので必要あれば無料ダウンロードからご活用ください。プラグイン側で「.htaccess」への追記も対応する予定でしたが想像より処理が複雑になったので含めていません。プラグイン停止時に追加コードを除去するまでも考慮して作りたかったのですが残念ながら時間がなく断念しました。
対応メモ
参考として途中までのコードを残しておきますね。有志の方がいらっしゃったらぜひ作り込んで共有ください。
// .htaccessに追記する
function htaccess_insert_code_edit() {
// マルチサイトの場合
if ( is_multisite() ) {
// 処理しない
} else {
// パスを確認
require_once( ABSPATH . 'wp-admin/includes/file.php' );
$home_path = get_home_path();
$htaccess_file = $home_path . '.htaccess';
$lines = array(
'#<IfModule mod_rewrite.c>',
'#RewriteEngine On',
'#RewriteCond %{THE_REQUEST} feed [NC]',
'#RewriteRule ^ - [L,R=404]',
'#</IfModule>',
);
// mod_rewriteの有効状態を確認する
if ( got_mod_rewrite() ) {
if ( insert_with_markers( $htaccess_file, 'RSSfeedStop', $lines ) ) {
// 成功時の処理
} else {
// 失敗時の処理
}
}
}
}
add_action('admin_init', 'htaccess_insert_code_edit');
あとは「差し込む位置の調整」と「プラグイン無効化時の処理」だけ追加すれば完成です。今は差し込むコードもコメントアウトしているので「.htaccessへの書き込みまでを含んだプラグインに仕上げる場合」は色々と触ってみてくださいね。もし出来上がったらお問い合わせフォームから教えてもらえれば嬉しいです。
まとめ
本日は「RSSフィードを停止する方法」をご紹介いたしました。
公開している無料プラグインではRSSフィードの無効化までを行っています。もし機能を試してみたい方はぜひダウンロードしてみてください。個人的には「.htaccessも含めて仕上げたい」と考えていましたが色々な環境で使うシチュエーションや安全性(セキュリティ面)を考慮すると無効化のみでも十分なのかもしれません。
本記事が何かの参考になれば幸いです。
最新式の無料プラグインを事前公開
WordPressは公式サイトに登録済みのプラグインだけで全機能を補足しきれません。当サイトでは使いやすさを追求した魅惑的なプラグインを無料でダウンロードいただけます。運営ホームページのマーケティング力をさらに高めるチャンスです。まずは無料でDLしてお試しくださいませ。
→ 改良されたプラグインを確認する