• 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細

このWikiはいつでも誰でも編集できます

「関数リファレンス/get template part」の版間の差分

提供: WordPress Codex 日本語版
移動先: 案内検索
(最新のマージ)
(残りを和訳。)
 
1行目: 1行目:
{{テンプレートタグガイド|PHP}}
 
 
 
<div id="Description">
 
<div id="Description">
 
== 説明 ==
 
== 説明 ==
 
</div>
 
</div>
テンプレートパーツ (ヘッダー、サイドバー、フッター以外) をテンプレートに読み込みます。これにより、テーマがコードのセクションを再利用すること、また[[Child Themes|子テーマ]]が親テーマのセクションを置き換えることが容易になります。
+
テンプレートパーツ(ヘッダー、サイドバー、フッターを除きます)をテンプレートへ読み込みます。これにより、テーマがコードのセクションを再利用すること、また[[Child Themes|子テーマ]]が親テーマのセクションを置き換えることが容易になります。
  
テーマのその名前のテンプレートパーツを[[インクルードタグ|インクルード]]します。name が指定された場合は、特定の部分をインクルードします。テーマに<tt>{slug}.php</tt> ファイルが無い場合は、インクルードしません。
+
テーマの $slug で指定したテンプレートパーツを[[インクルードタグ|インクルード]]します。$name が指定された場合は、そのパーツの個別版をインクルードします。テーマに <tt>{$slug}.php</tt> ファイルがなければ何もインクルードしません。
  
パラメータに関しては、"{slug}-{name}.php" を呼び出します。
+
$name パラメータの値は、例えばファイル "{slug}-special.php" をインクルードしたければ "special" にします。
  
 
<div id="Usage">
 
<div id="Usage">
17行目: 15行目:
  
 
  <?php get_template_part( $slug, $name ); ?>
 
  <?php get_template_part( $slug, $name ); ?>
 
<code>get_template_part</code> の値を返しません、そして一致するテンプレートファイルの検索に失敗した場合に警告しません。
 
 
失敗について聞きたい場合は、以下を使用:
 
 
    <?php assert( "locate_template( array('$slug-$name.php', '$slug.php'), false, false )" ); ?>
 
  
 
<div id="Parameters">
 
<div id="Parameters">
 
 
== パラメータ ==
 
== パラメータ ==
 
</div>
 
</div>
 +
 
{{Parameter|$slug|文字列|一般テンプレートのスラッグ名}}
 
{{Parameter|$slug|文字列|一般テンプレートのスラッグ名}}
 
{{Parameter|$name|文字列|特定テンプレートの名前|オプション}}
 
{{Parameter|$name|文字列|特定テンプレートの名前|オプション}}
 +
 +
<div id="Return_Values">
 +
== 戻り値 ==
 +
</div>
 +
 +
<code>get_template_part</code> は値を返しません。
 +
 +
なお、一致するテンプレートファイルの検索に失敗した場合に警告しません。失敗の有無を確かめたければ以下のコードを使ってください:
 +
 +
<?php assert( "locate_template( array( '$slug-$name.php', '$slug.php' ), false, false )" ); ?>
  
 
<div id="Examples">
 
<div id="Examples">
38行目: 40行目:
 
=== 子テーマで loop.php を使用する ===
 
=== 子テーマで loop.php を使用する ===
 
</div>
 
</div>
テーマフォルダが wp-content/themes、親テーマが twentyten、子テーマが ''twentytenchild'' である場合、以下のコードが、
+
 
 +
テーマフォルダが wp-content/themes、親テーマが twentyten、子テーマが ''twentytenchild'' であるとします。この場合、以下のコードは
  
 
  <?php get_template_part( 'loop', 'index' ); ?>
 
  <?php get_template_part( 'loop', 'index' ); ?>
  
下記の優先順でPHP関数の[http://www.php.net/manual/en/function.require.php require()]を実行します。
+
下記の優先順で PHP 関数の [http://www.php.net/manual/ja/function.require.php require()] を実行します。
 +
 
 
:#''wp-content/themes/twentytenchild/loop-index.php''
 
:#''wp-content/themes/twentytenchild/loop-index.php''
 
:#''wp-content/themes/twentyten/loop-index.php''
 
:#''wp-content/themes/twentyten/loop-index.php''
48行目: 52行目:
 
:#''wp-content/themes/twentyten/loop.php''
 
:#''wp-content/themes/twentyten/loop.php''
 
   
 
   
 
 
<div id="Using_with_theme_subfolders">
 
<div id="Using_with_theme_subfolders">
 
=== テーマサブフォルダの使用 ===  
 
=== テーマサブフォルダの使用 ===  
 
</div>
 
</div>
テーマディレクトリ内のサブフォルダでこの関数を使用するためには、単純にフォルダ名を[[用語集#.E3.82.B9.E3.83.A9.E3.83.83.E3.82.B0|スラッグ]]の前に追加するだけです。例えば、"partials"というフォルダーがテーマディレクトリ内にあり、"content_page.php" というテンプレートパーツがそのサブフォルダにある場合、get_template_part() を以下のように用います:
 
<?php get_template_part( 'partials/content', 'page' ); ?>
 
  
 +
テーマディレクトリ内のサブフォルダでこの関数を使用するためには、単純にフォルダ名を[[用語集#.E3.82.B9.E3.83.A9.E3.83.83.E3.82.B0|スラッグ]]の前に追加するだけです。例えば、"partials" というフォルダがテーマディレクトリ内にあり、"content-page.php" というテンプレートパーツがそのサブフォルダにある場合、get_template_part() を以下のように用います:
 +
 +
<?php get_template_part( 'partials/content', 'page' ); ?>
  
 
<div id="Navigation">
 
<div id="Navigation">
 
=== ナビゲーション ===
 
=== ナビゲーション ===
 
</div>
 
</div>
 +
 
一般的な nav.php テンプレートファイルを使用してナビゲーションバーをテーマに追加します。
 
一般的な nav.php テンプレートファイルを使用してナビゲーションバーをテーマに追加します。
  
64行目: 69行目:
 
  <?php get_template_part( 'nav', '2' );      // Navigation bar #2 (nav-2.php) ?>
 
  <?php get_template_part( 'nav', '2' );      // Navigation bar #2 (nav-2.php) ?>
 
  <?php get_template_part( 'nav', 'single' ); // Navigation bar to use in single pages (nav-single.php) ?>
 
  <?php get_template_part( 'nav', 'single' ); // Navigation bar to use in single pages (nav-single.php) ?>
 +
  
 
<div id="Notes">
 
<div id="Notes">
== ==
+
== 参考 ==
 
</div>
 
</div>
* Uses: [[関数リファレンス/locate_template|locate_template()]]/[[:en:Function_Reference/locate_template|en]]
+
* [[関数リファレンス/locate_template|locate_template()]] /[[:en:Function_Reference/locate_template|en]] を使います。
* Uses: [[関数リファレンス/do_action|do_action()]]/[[:en:Function_Reference/do_action|en]] Calls 'get_template_part_{$slug}' action.
+
* [[関数リファレンス/do_action|do_action()]] /[[:en:Function_Reference/do_action|en]] を使ってフック <tt>'get_template_part_{$slug}'</tt> を呼び出します。
  
 
=== テンプレートに変数を渡す ===
 
=== テンプレートに変数を渡す ===
Because the template is being <tt>require</tt>d, it will not have access to any variables you define within the calling theme's PHP code, unless you explicitly declare them as <code>global</code>.
 
  
However, [[関数リファレンス/load_template|load_template()]] /[[:en:Function_Reference/load_template|en]], which is called indirectly by <tt>get_template_part()</tt> <tt>extract</tt>s all of the [[クラスリファレンス/WP_Query|WP_Query]] query variables, into the scope of the loaded template. So you can use [[関数リファレンス/set_query_var|set_query_var()]] to make your variable available to the template part.
+
テンプレートは <tt>[http://php.net/manual/ja/function.require.php require]</tt> によって読み込まれるので、その中からは呼び出し元テーマの PHP コードで定義された変数をアクセスできません。その変数を <tt>[http://php.net/manual/ja/language.variables.scope.php global]</tt> 宣言すればアクセス可能です。
 +
 
 +
しかし <tt>get_template_part()</tt> の内部で呼び出される [[関数リファレンス/load_template|load_template()]] /[[:en:Function_Reference/load_template|en]] は、[[クラスリファレンス/WP_Query|WP_Query]] クエリ変数をすべて <tt>[http://php.net/manual/ja/function.extract.php extract]</tt> して、読み込むテンプレートのスコープへ入れます。従って [[関数リファレンス/set_query_var|set_query_var()]] を使えば変数をテンプレートパーツで使えるようにできます。
  
 
<pre>
 
<pre>
83行目: 90行目:
  
 
== 変更履歴 ==
 
== 変更履歴 ==
 +
 
* 新規追加: [[Version 3.0|3.0]]
 
* 新規追加: [[Version 3.0|3.0]]
  
88行目: 96行目:
 
== ソースファイル ==
 
== ソースファイル ==
 
</div>
 
</div>
 +
 
<tt>get_template_part()</tt> は {{Source|wp-includes/general-template.php|3.0}} にあります。
 
<tt>get_template_part()</tt> は {{Source|wp-includes/general-template.php|3.0}} にあります。
 
 
  
 
<div id="External_resources">
 
<div id="External_resources">
 
== 外部リソース ==
 
== 外部リソース ==
 
</div>
 
</div>
 +
 
* [http://kovshenin.com/2013/get_template_part/ get_template_partを理解する(英語)] by Konstantin Kovshenin
 
* [http://kovshenin.com/2013/get_template_part/ get_template_partを理解する(英語)] by Konstantin Kovshenin
 
* [http://qiita.com/ironsand/items/7fce685abdbf18a98c71 http://qiita.com/ironsand/items/7fce685abdbf18a98c71] Wordpressでテンプレートファイルをロードする5つの方法とその違い by ironsand
 
* [http://qiita.com/ironsand/items/7fce685abdbf18a98c71 http://qiita.com/ironsand/items/7fce685abdbf18a98c71] Wordpressでテンプレートファイルをロードする5つの方法とその違い by ironsand
  
 
<div id="Related">
 
<div id="Related">
 +
== 関連項目 ==
 +
</div>
  
== 関連資料 ==
 
</div>
 
 
{{Include Tags}}
 
{{Include Tags}}
 
{{NeedTrans}}
 
  
 
{{Tag Footer}}
 
{{Tag Footer}}
 +
 +
{{原文|Function Reference/get_template_part|152486}} <!-- 14:29, 1 July 2015 Pseudoxiah 版 -->
  
 
{{DEFAULTSORT:Get_template_part}}
 
{{DEFAULTSORT:Get_template_part}}
 
[[Category:関数]]
 
[[Category:関数]]
 
[[Category:wp3.0]]
 
[[Category:wp3.0]]
 
{{原文|Function Reference/get_template_part|152486}}<!-- 14:29, 1 July 2015‎ Pseudoxiah  版 -->
 
  
 
[[en:Function Reference/get_template_part]]
 
[[en:Function Reference/get_template_part]]

2016年5月10日 (火) 01:11時点における最新版

テンプレートパーツ(ヘッダー、サイドバー、フッターを除きます)をテンプレートへ読み込みます。これにより、テーマがコードのセクションを再利用すること、また子テーマが親テーマのセクションを置き換えることが容易になります。

テーマの $slug で指定したテンプレートパーツをインクルードします。$name が指定された場合は、そのパーツの個別版をインクルードします。テーマに {$slug}.php ファイルがなければ何もインクルードしません。

$name パラメータの値は、例えばファイル "{slug}-special.php" をインクルードしたければ "special" にします。

使い方

<?php get_template_part( $slug ); ?>
<?php get_template_part( $slug, $name ); ?>

パラメータ

$slug
文字列) (必須) 一般テンプレートのスラッグ名
初期値: なし
$name
文字列) (オプション) 特定テンプレートの名前
初期値: なし

戻り値

get_template_part は値を返しません。

なお、一致するテンプレートファイルの検索に失敗した場合に警告しません。失敗の有無を確かめたければ以下のコードを使ってください:

<?php assert( "locate_template( array( '$slug-$name.php', '$slug.php' ), false, false )" ); ?>

用例

子テーマで loop.php を使用する

テーマフォルダが wp-content/themes、親テーマが twentyten、子テーマが twentytenchild であるとします。この場合、以下のコードは

<?php get_template_part( 'loop', 'index' ); ?>

下記の優先順で PHP 関数の require() を実行します。

  1. wp-content/themes/twentytenchild/loop-index.php
  2. wp-content/themes/twentyten/loop-index.php
  3. wp-content/themes/twentytenchild/loop.php
  4. wp-content/themes/twentyten/loop.php

テーマサブフォルダの使用

テーマディレクトリ内のサブフォルダでこの関数を使用するためには、単純にフォルダ名をスラッグの前に追加するだけです。例えば、"partials" というフォルダがテーマディレクトリ内にあり、"content-page.php" というテンプレートパーツがそのサブフォルダにある場合、get_template_part() を以下のように用います:

<?php get_template_part( 'partials/content', 'page' ); ?>

一般的な nav.php テンプレートファイルを使用してナビゲーションバーをテーマに追加します。

<?php get_template_part( 'nav' );           // Navigation bar (nav.php) ?>
<?php get_template_part( 'nav', '2' );      // Navigation bar #2 (nav-2.php) ?>
<?php get_template_part( 'nav', 'single' ); // Navigation bar to use in single pages (nav-single.php) ?>


参考

テンプレートに変数を渡す

テンプレートは require によって読み込まれるので、その中からは呼び出し元テーマの PHP コードで定義された変数をアクセスできません。その変数を global 宣言すればアクセス可能です。

しかし get_template_part() の内部で呼び出される load_template() /en は、WP_Query クエリ変数をすべて extract して、読み込むテンプレートのスコープへ入れます。従って set_query_var() を使えば変数をテンプレートパーツで使えるようにできます。

// You wish to make $my_var available to the template part at `content-part.php`
set_query_var( 'my_var', $my_var );
get_template_part( 'content', 'part' );

変更履歴

  • 新規追加: 3.0

ソースファイル

get_template_part()wp-includes/general-template.php にあります。

外部リソース


インクルードタグ: get_header(), get_footer(), get_sidebar(), get_template_part(), get_search_form(), comments_template()


関数リファレンステンプレートタグ目次もご覧ください。


最新英語版: WordPress Codex » Function Reference/get_template_part最新版との差分