ブログサイトに欠かせない要素の一つに、「RSS」や「Atom」などの「フィード」がある。行きつけのサイトのフィードを対応ソフトに登録しておけば、様々なサイトの新着情報をまとめてチェックできて便利だ。
定番ブログエンジンの「WordPress」にも、これらのフィードを出力する機能が標準搭載されているが、「http://example.com/rss」のような拡張子無しのURLになってしまい、管理画面でのカスタマイズもできない。
拡張子が無いと中途半端な感じがするし、他のブログエンジンからの移行時にはフィードのURLが変わってしまうと既存の読者の情報取得に支障が生じる恐れもあるので、どうにか変更したいところだ。
フィードのURLをカスタマイズしたければ、「functions.php」にスクリプトを追加してやろう。画像ページや固定ページなどのURLの改造では、URLの認識ルールの追加とURLの生成処理の書き換えの2つのフィルタを追加すればいいが、フィードURLの改造には誤ったリダイレクトの抑止処理も必要となるぞ。
function my_feed_link_rule($rules){
return(array(
'rss\\.xml'=>'index.php?feed=rss2',
'atom\\.xml'=>'index.php?feed=atom',
'index\\.rdf'=>'index.php?feed=rdf'
)+$rules);
}
add_filter('rewrite_rules_array', 'my_feed_link_rule');
function my_feed_link($link,$feed=""){
switch($feed){
case('atom'):return(home_url('/atom.xml'));
case('rdf'):return(home_url('/index.rdf'));
case('rss'):return(home_url('/rss.xml'));
case('rss2'):return(home_url('/rss.xml'));
default:return($link);
}
}
add_filter('feed_link','my_feed_link',10,2);
if(preg_match('@(atom\\.xml|index\\.rdf|rss\\.xml)$@sui',$_SERVER['REQUEST_URI'])){
remove_action('template_redirect', 'redirect_canonical');
}
フィードのURLをカスタマイズするには、functions.phpにこのようなスクリプトを追加しよう。一つ目のfunction~add_filterではURLの認識ルールを追加し、2つ目ではフィードURLの生成処理を上書きしている。
その後の「if(preg_match(…」以下では、フィードのURLへのアクセス時に「redirect_canonical」の処理の登録を解除している。
この「redirect_canonical」というのは、旧式のURLなどへのアクセスを正式なURLへ転送する処理だが、フィードURLのカスタマイズが想定されておらず、カスタマイズしたフィードURLにアクセスすると誤ったURLへの転送が発生してしまうので、実行を抑止してやる必要があるのだ。
処理を記述したfunctions.phpをアップロードして、管理画面の「設定」→「パーマリンクの設定」で「変更を保存」ボタンを押すと、カスタマイズしたURLが認識されるようになるぞ。

全世界1,000万以上ダウンロード超え!水分補給サポートアプリ最新作『Plant Nanny 2 - 植物ナニー2』が11/1より日本先行配信開始中
たこ焼きの洞窟にかき氷の山!散歩を習慣化する惑星探索ゲーム『Walkr』がアップデート配信&6/28までアイテムセール開始!
【まとめ】仮想通貨ビットコインで国内・海外問わず自由に決済や買い物ができる販売サイトを立ち上げる
WordPressの画像表示ページのURLが気に入らない。書式って変えられないの?
WordPressの固定ページを「.html」付きのURLにすることってできないの?
WordPressの記事URLの書式を変更したいけど、前のURLが404になっちゃうのは困る…
WordPressの固定ページに不特定多数の階層下URLのページを作る事ってできない?
WordPressでURL用の記事名を付け忘れたときに長い名前にならないようにしたい
WordPressに日本語ファイル名の画像をアップしたときにページURLが日本語になるのが嫌
