
get_template_part() 関数は、WordPress テーマ内で他のテンプレートファイルを読み込むために使用されます。これは特に、同じコードを複数のテンプレートで使用する必要がある場合に便利です。
記述方法
基本的な記述方法
<?php get_template_part( 'folder/file' ); ?>このコードは、テーマ内の folder フォルダ内にある file.php を読み込みます。たとえば、example.php を読み込むには、get_template_part( 'example' ); というように使います。
フォールバックテンプレート
テンプレートが見つからなかった場合に、代替のテンプレートを読み込むこともできます。
<?php get_template_part( 'folder/file', 'fallback' ); ?>このコードは、まずfolder/file.php を探しますが、見つからない場合は folder/file-fallback.php を読み込みます。
フォルダを指定する
テンプレートファイルがサブフォルダ内にある場合は、サブフォルダを指定できます。
<?php get_template_part( 'folder/subfolder/file' ); ?>変数の使用
get_template_part() に変数を渡すこともできます。
<?php
$post_type = 'custom';
get_template_part( 'content', $post_type );
?>この場合、content-custom.php ファイルを読み込みます。
条件付き読み込み
特定の条件下でのみテンプレートファイルを読み込むこともできます。
<?php if ( is_single() ) {
get_template_part( 'single-post' );
} else {
get_template_part( 'archive' );
} ?>この例では、シングルページが表示されている場合は single-post.php を読み込み、それ以外の場合は archive.php を読み込みます。
get_template_part()の詳細
get_template_part()のテンプレートファイルの探索方法
WordPressは、get_template_part() 関数を使用して指定されたテンプレートファイルを探します。その探し出す手順は次の通りです。
- 最初に、子テーマ内のテンプレートファイルを探します。見つからない場合は、親テーマ内を探します。
- テーマファイルがある場所は、テーマのルートディレクトリです。
- ファイル名は拡張子
.phpを含まないで指定します。
テンプレートファイルの優先順位
同じ名前のテンプレートファイルが親テーマと子テーマの両方に存在する場合、WordPress はどちらを使用するかを決定するために、テーマの優先順位を考慮します。基本的なルールは次の通りです。
- 子テーマにテンプレートファイルがある場合、そのファイルが優先されます。
- 子テーマにテンプレートファイルがない場合は、親テーマのファイルが使用されます。
テンプレートファイルの柔軟な使用
get_template_part() を使うことで、テーマ内の異なる部分で同じコードを再利用することができます。たとえば、共通のヘッダーやフッター、サイドバーなどがあります。これにより、コードの保守性が向上し、修正が簡単になります。ブログのサイトでは広告タグを管理するときに活用したりします。
テンプレートパーツの動的な読み込み
get_template_part() は、変数を使用して動的にテンプレートファイルを読み込むこともできます。これにより、同じコードを使って異なるコンテキストで異なるテンプレートファイルを読み込むことが可能です。
フォールバックテンプレートの使用
テーマ内にフォールバックテンプレートを提供することで、エラーや不足の際に備えることができます。get_template_part() は、第二引数に -fallback を指定することで、フォールバックテンプレートを読み込むことができます。
テンプレートファイルの構造化
get_template_part() を使うことで、テーマの構造をより理にかなった形に整理することができます。例えば、ループ内で使用するテンプレートファイルを content.php として分離し、コードを整理することができます。
get_template_part() 関数は、WordPress テーマ開発において非常に便利であり、コードの再利用性を高め、テーマの保守性を向上させるのに役立ちます。
get template partの記述例
例えばあるウェブサイトでサイトのページ下部の広告バナーの部分ではindex.php、single.php、category.php、page.php、tag.phpなどのテンプレートの広告バナーを表示させたい部分に…
<?php get_template_part( 'banner' ); ?>と、記述しています。そしてbanner.phpというファイルには
<div class="banner">
<div class="banner1">
<a href="http://example.com"><img src="https://*****.comw/banner1.jpg" alt="banner1"></a>
</div>
<div class="banner2">
<a href="http://example.com"><img src="https://*****.comw/banner2.jpg" alt="banner2"></a>
</div>
<div class="banner3">
<a href="http://example.com"><img src="https://*****.comw/banner3.jpg" alt="banner3"></a>
</div>
</div>こんな感じの記述をしていたりします。このようにすることでバナー画像を一つ差し替えたいと思ったときにindex.php、single.php、category.php、page.php、tag.phpなどのテンプレートすべてで変更する必要がなく、banner.phpだけ編集すればよいので効率的です。
そしてもし、tag.phpだけ別の広告バナーを表示させたいと思ったとき、banner-tag.phpというファイルを作成しbanner.phpと同様に
<div class="banner">
<div class="banner1">
<a href="http://example.com"><img src="https://*****.comw/banner3.jpg" alt="banner3"></a>
</div>
<div class="banner2">
<a href="http://example.com"><img src="https://*****.comw/banner4.jpg" alt="banner4"></a>
</div>
<div class="banner3">
<a href="http://example.com"><img src="https://*****.comw/banner5.jpg" alt="banner5"></a>
</div>
</div>のように記述します。そしてtag.phpには
<?php get_template_part( 'banner' , 'tag' ); ?>と、記述します。こうするとtag.phpではbanner-tag.phpを読み込みます。そして仮にbanner-tag.phpが存在しなかった場合にはbanner.phpを読み込みます。