自作のプラグインで生成するページが既存のテンプレートにマッチしなかったり、ページの種類によってテンプレートを変えたいなーなんて事、ありますよね。
page.php などの中でさらに分岐させても良いのですが、それではロジックとビューが混在してしまうためロジックがプラグインだったりするとテーマとプラグインに依存関係が生まれて使い勝手が悪くなってしまってイマイチです。
そんなときはフィルタ関数で呼び出すテンプレートファイルを変えてしまいましょう。
大体こんな感じ。
function pageSnacher( $template ){ if( preg_match( '/^\/hoge$/', getenv( 'REQUEST_URI' ) ) ) $template = TEMPLATEPATH . '/hoge.php'; return $template; } add_filter( 'page_template', 'pageSnatcher' );
URI が /hoge だった場合にテーマのディレクトリにある hoge.php がテンプレートファイルとして読み込まれます。
page_template は wp-includes/template-loader.php で is_page() が true を返したときに呼び出されるフックです。
よって、init フックとかで add_filter() しても意味がなかったりしますので気をつけてください。
それぞれのテンプレートで呼び出されるフックは wp-includes/theme.php 辺りを読めば大体わかると思います。
- Newer: Wordpress プラグイン開発に役立つ小さなテクニックと気をつけるべき点
- Older: デバッグ用 jQuery プラグイン
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://spais.jp/note/wordpress-%e3%81%ab%e7%8b%ac%e8%87%aa%e3%81%ae%e3%83%86%e3%83%b3%e3%83%97%e3%83%ac%e3%83%bc%e3%83%88%e3%82%92%e8%bf%bd%e5%8a%a0%e3%81%99%e3%82%8b/2009-03-26/trackback
- Listed below are links to weblogs that reference
- Wordpress に独自のテンプレートを追加する from SPaiS