http://wpdocs.sourceforge.jp/プラグイン_API/フィルターフック一覧
に書いてある通り「post_link」にフィルターを加えればいいらしい。
function.phpに
add_filter( ‘post_link’, ‘hogehoge_function’ );
みたいに望みのフィルターを足せば、ウィジェット・プラグインで呼び出したURLにも適用される。
例えば
function make_href_root_relative($input) {
return preg_replace(‘!http(s)?://’ . $_SERVER[‘SERVER_NAME’] . ‘/blog!’, ‘http://hogehoge.jp/hoge’, $input);
}
function root_relative_permalinks($input) {
return make_href_root_relative($input);
}
add_filter( ‘post_link’, ‘root_relative_permalinks’ );
とか。
これが必要になったのはとあるwordpressブログの修正のため。
ReverseProxyを使って、あるドメインのディレクトリに別サーバにあるwordpressのブログを表示させている。
つまり
http://hogehoge.jp/hoge/
にアクセスすると
http://***.***.***.***/blog/
の中身が表示される。
普通こういう場合は
一般設定→サイトアドレス(URL)
に
http://hogehoge.jp/hoge/
を入れるもんだと思うんだけど、いろいろ事情があってそれが出来なかった。
それでリライトを入れまくったらワケわかんなくなって「望むとおりに動いているが、なぜそうなっているのか分からない」というまずい状況になってしまった。
そんな状況下で、ウィジェットでサイドバーに最新記事一覧を出す必要が出てきた。ところが、そのままウィジェット足したら、URLが「http://***.***.***.***/blog/」の方になってしまった。これを修正するために、上記のフィルターフックを発見したわけだ。
まあとりあえずうまくいったので良かったわけだが、最初の構築時にしっかり構造を把握しておくべきだった。最初手を抜くと後が地獄になる。