Home > WP Plugin Hacks > [WPPH05]WordPressのRSSなどのフィード取得を制限する

[WPPH05]WordPressのRSSなどのフィード取得を制限する

気がつけば年もあけて2010年ですね。本年もどうぞよろしくお願いします。なお、昨年は不幸が重なったため、喪中につき年賀状等の送付を見送らせていただきました。平にご容赦ください。

さて、WordPressはAtom,RSS,RDFなどの形式でフィードを配信することができますが、サイトによってはフィードを提供したくない、制限したい場合などがあります。例えばAtomだけ使ってもらいたいとか、自分用にRSSをカスタマイズしたいとか、RDFだけ別なことに使いたいとか。

単純には、wp-atom.php,wp-rss.php,wp-rss2.php,wp-rdf.phpを削除又はリネームなどすれば、自分も含めそのフィードを利用できなくすることができます。が、当たり前というか、自分は利用したいけど、他の人には使ってもらいたくないから制限したいわけなので、ちょっと考えて、URLにセキュリティ用のキーを埋め込んでいる場合だけフィードを返し、それ以外の場合はフィードを返さないようにする、というのを実装してみました。

<?php
/*
Plugin Name: RSS Limiter
Plugin URI: http://officel.biz
Description: RSS取得に、指定したキーと値を必要とするようにする
Version: 1.0.0
Author: Y.Nishimura
Author URI: http://officel.biz/
*/

function rsslimiter() {
	// 文字列 sk と OK を好きな値に変更して使う。
	// この状態のURL は、 http://~/?feed=rss&sk=OK
	if ( $_GET['sk'] === 'OK'){
		// 指定のキーと値があっているなら何もしない
	}else{
		// あっていないなら本来のrss2処理を実行しない。
		remove_action('do_feed_rss2','do_feed_rss2');
	}
}
// 本来のrss2処理よりも先に(優先度9)処理するところが大事。
add_action('do_feed_rss2', 'rsslimiter',9);
?>

これにより、普通に ?feed=rss2 にアクセスすると、真っ白になり(前述のようにwp-rss2.phpを避けた場合も同じく真っ白になる)、URL中に &sk=OK を付けた場合にはRSS2でデータが返るようになります。こうしてしまえば、RSS2の中身(wp-includes/feed-rss2.php)を好きなようにカスタマイズしても、他の利用者には見せることなく済みます。ちなみに、RSS2以外は、’do_feed_rdf’ , ‘do_feed_rss’ , ‘do_feed_atom’ なので、適宜直して使えば、どうにでもできます。

コメントにも書いていますが、本来の処理 ‘do_feed_ほにゃらら’ よりも先に実行させる必要があるので、優先度を小さい数字にするのが大事なポイントです。

改善点のお勧めは、remove_action した際に、レスがなくなってしまって真っ白になるのを防ぐために、リダイレクトでホームに飛ばすとか、404にするとかが挙げられます。また、キーと値をフォームから入力可能にしてDBにオプションとして保持させることもできます。もっとも、リソースを無駄にするだけなので、このようにプラグインに直接書いたほうが早くていいと思いますが。

注意点としては、フィードの出力は一度行われると一定時間が経過するまで内容が変化せず、テスト確認がしにくい、などが挙げられます。これは、新規投稿を行うか、既存の投稿ステータスを変更してから公開中に戻すなど、投稿情報を変更することで即時反映させることができます。RSSテンプレートを修正した場合も同じです。

日中思いつきで、というか、漢字読めるかな?のフィードを制限しようかなと思って作ってみました。いつものように自己責任でご自由にお使いください。

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://officel.biz/wp-plugin-hack/wpph05-wp-rss-limit.htm/trackback
Listed below are links to weblogs that reference
[WPPH05]WordPressのRSSなどのフィード取得を制限する from Office L

Home > WP Plugin Hacks > [WPPH05]WordPressのRSSなどのフィード取得を制限する

Search
Feeds
Meta


Return to page top