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

コメント:0

コメントフォーム
入力した情報を記憶する

トラックバック:0

この記事のトラックバック URL
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
トラックバックの送信元リスト
Wordpress に独自のテンプレートを追加する - SPaiS より

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

カテゴリー

ページの上部に戻る