Home > Note | Wordpress > Wordpress に独自のテンプレートを追加する

Wordpress に独自のテンプレートを追加する

自作のプラグインで生成するページが既存のテンプレートにマッチしなかったり、ページの種類によってテンプレートを変えたいなーなんて事、ありますよね。
page.php などの中でさらに分岐させても良いのですが、それではロジックとビューが混在してしまうためロジックがプラグインだったりするとテーマとプラグインに依存関係が生まれて使い勝手が悪くなってしまってイマイチです。

そんなときはフィルタ関数で呼び出すテンプレートファイルを変えてしまいましょう。
大体こんな感じ。

<?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 辺りを読めば大体わかると思います。

Comments:0

Comment Form
Remember personal info

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

Home > Note | Wordpress > Wordpress に独自のテンプレートを追加する

Search
Feeds
Meta

Return to page top