menu
書いてる野郎
orebike@gmail.com
カスタマイズしてサイトを作る場合は独自の URL を使うことがほとんどである。しかし、これは終わらない旅になる可能性が高いので、できるなら WordPress の標準に従ったほうがいい。
そのやり方。
テーマ内の functions.php
にこのように書く
function hogehoge_url(){ add_rewrite_rule('my-blog/hoge/?$', 'index.php?page_id=123', 'top'); } add_action('init', 'hogehoge_url');
WordPress ではこのように書いて独自の URL に対して、パラメータ付きで index.php
を page_id
指定で呼び出すことで任意のページに結びつける。
うけつける URL の部分は正規表現で書ける。
書いた後に、WordPress 管理画面の 設定
の パーマリンク設定
を「基本」以外にして保存するとこの設定が反映される。
この記述を変更した場合は、設定を変えなくても設定を保存しないと変更が反映されないという裏技的操作が必要になる。
このように記述する。
add_rewrite_rule('my-blog/hoge/([0-9]+)$', 'index.php?page_id=123&hoge=$matches[1]', 'top');
キャプチャした内容を、変換後のパラメータで matches という連想配列っぽい記述で取り出すことができる。
こんな記述しなくても、それ、mod_rewrite
でできるんじゃないの?とも思う
WordPress はパーマリンクの設定が「基本」以外になっている場合 mod_rewrite を使うことになるのだが、 mod_rewrite でも同じように URL を制御することは可能である。
この場合内部のルーティング処理がまるごとカットされるので、それに依存する機能(パーマリンク系)が使えなくなる。
しかし、基本以外でやってしまった場合、内部のルーティング処理とかぶってしまって、意味不明な挙動になる。
なので、mod_rewrite
で URL
を制御しようと思わないほうがよい。