[Laravel 6.x]Route::get()で設定したURLパラメーターの取得
Laravel6.xでRoute::get('/path/to/{id}')で設定したidの取得方法について。
HOME>WEBプログラム覚書>[WordPress] テンプレートルーティングのメモ
WordPressが呼びだすテンプレートをTEMPLATEPATH直下じゃなくてTEMPLATEPATH/views/とかにできるのか調べた時のメモ。 バージョンはWordPress 3.3 日本語版。
テンプレートの選択、呼び出しはこのファイルで実行される。
リクエストされたページの表示に使用するテンプレートファイルを判断する前に実行し、プラグインがテンプレートファイルの選択を上書きできるようにする。
とあるが、基本的にここで何をしようが、次のテンプレート選択処理に入る気がする。例外投げるとかdieするとかリダイレクトするとかすれば別だが。 なのでtemplate_redirect()はテンプレートファイルの選択を上書きというより、 wordpressがテンプレートを読み込む前に、リダイレクトしたいとか何らかの処理をしたい場合に利用するものっぽい。
本当にここでテンプレート選択処理をしたいのなら、/index.phpで設定されてる
を削除するかfalseにすればテンプレート選択処理には入らないので、リダイレクト先のファイルで テンプレートのルーティングを実装すればよい。 このファイルってコアに含まれるのだろうか?
で、WordPressがルーティングしたテンプレートを変更したい場合。
wp_includes/theme.phpのget_query_template()関数内で設定されている {$type}_templateフィルターを利用する。
$typeには、indexとか404とかcategoryとか呼ばれるテンプレートのタイプ名?が入る。
WordPressをサイトの一部として利用していて、404はサイトのものを利用したい場合。 まぁ404.phpから呼び出すとかでもいいんだけど例ってことで。
$templateにはWordPressのルーティングで決定されたテンプレートのパスが入る。 この場合、
ABSPATH/wp-content/themes/theme_name/404.php
のように。
template_loader.php内でテンプレートが呼ばれる直前に apply_filters( 'template_include', $template )というフィルタが 設定されているのでこれにフックすればよい。
$templateはインクルードされるテンプレートのフルパス。 function.php内でこんな感じで設定する。
ただ、この場合テーマ直下をindex.phpとfunction.phpとstyle.cssだけにした場合 $templateにはindex.phpしか入ってこない。
WordPressのテンプレート階層はTEMPLATEPATHにあるファイルの存在を確認することで決定しているので TEMPLATEPATH/views/をテンプレート設置場所にしたい場合、TEMPLATEPATH自体を変更しないといけない。
ただfunction.phpが呼ばれる時点ではTEMPLATEPATHは決定されているので、ここがfunction.phpの限界点。 TEMPLATEPATHを変更するにはプラグインを利用する必要がある。
TEMPLATEPATHはwp-includes/theme.phpのget_template_directory()の実行結果で決まっていて、この関数では
が設定されているので、プラグインで、
とすることで、TEMPLATEPATHの変更が可能となる。 でもってテンプレートが呼び出される直前で実行されるtemplate_includeに
としておくことでテーマ直下のindex.phpからテンプレートをビューとして呼び出せる。
これでCakePHPのようにビューとレイアウトを分けることが出来そうな気がする。 まだ実装はしてないのでわからんけどw
ファイル確認はSTYLESHEETPATHが優先されるので、テーマ直下がSTYLESHEETPATHで、index.phpを呼び出すパターンの場合、上記だとviews/index.phpではなくテーマ直下のindex.phpが選択される。なので
など、フロントコントローラーはWordPressのテンプレート階層で利用されないファイル名にした方がよい。
投稿日 | 2011年12月19日 04:40 |
---|---|
カテゴリ | PHP |
タグ | WordPress |
トラックバック URL | http://www.kantenna.com/cgi-bin/mt504/mt-tb.cgi/1247 |
コメント