Home > Wordpressのこと > [覚書] ページで使用中のテンプレートを調べる方法

[覚書] ページで使用中のテンプレートを調べる方法

added : 2008-12-08

"sidebar.php" 内での条件分岐に使えるかも。

  1. get_post_meta($post->ID, '_wp_page_template', true);

「page-1column.php」というページテンプレートの場合、「page-1column.php」が返ってきます。ファイル内で設定している "Template Name" ではないことに注意。また、値がない場合の返り値は空値です。

条件分岐の例

以下は、使用中のページテンプレートが「page-1column.php」の場合に処理を実行します。

  1. if ( get_post_meta($post->ID, '_wp_page_template', true) == 'pege-1column.php' ) {
  2. 処理内容
  3. }

以下は、使用中のページテンプレートがデフォルトテンプレート(未設定)の場合に処理を実行します。

  1. $pageTemplate = get_post_meta($post->ID, '_wp_page_template', true);
  2. if ( !$pageTemplate || $pageTemplate == 'default' ) {
  3. 処理内容
  4. }

デフォルトテンプレートの場合、たとえばページテンプレートを設定して保存していたページを後からデフォルトに戻すと meta_key "_wp_page_template" には "default" が設定されるため、「空値かどうか」だけでの条件分岐は成り立ちません。
このため、「何らかのページテンプレートを使用している場合」を条件とするなら、

  1. $pageTemplate = get_post_meta($post->ID, '_wp_page_template', true);
  2. if ( $pageTemplate && $pageTemplate != 'default' ) {
  3. 処理内容
  4. }

となります。

is_page_template() を使わない理由

WordPress 2.6 現在、is_page_template() は正しく働きません。上に書いた、"_wp_page_template" が "default" であるときの処理がされていないため。
「特定のページテンプレートを使用しているかどうか」には使えます。

  1. is_page_template('example.php')

2.7 では直ってるといいんですが。

コメント / トラックバック

  1. Pingbacked by WordPress のページテンプレートの情報を取得する方法 | ウェブル
    // 2010-04-24 06:07pm

    [...] これらについては以下のページが役に立ちました。 [覚書] ページで使用中のテンプレートを調べる方法 [...]

コメントフォーム / トラックバックURL

※ コメント・トラックバックはスパム対策のため、管理人の確認後に掲載されます。リアルタイムには反映されませんのでご了承ください。

コメントフォーム

トラックバックURL

このエントリーへのリンク

Return to page top