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
を読み込みます。