これは、他のテンプレートを現在のテンプレート内に埋め込む関数です。
直接コードを記述せず、別ファイルとして1行のコードで呼び出せるので、管理や編集が楽になります。
headerやfooterなど主要なパーツは「 get_header();
」や「 get_footer();
」というシンプルな関数が予め用意されています。get_template_partはそれ以外の、自作したテンプレートを読み込むときに使います。
get_template_partの使い方について実例を使って解説します。
get_template_part関数の基本構文
get_template_partは以下のように最大で2つの引数をとります。
get_template_part( $slug, $name );
$slug: テンプレートのパス(必須)
$name: 特定テンプレート名(省略可)
指定したファイルが見つからなかったときは、「false」を返します(v5.5.0以降)。
ここではWordpressのフィルの命名ルールに沿っています。
WordPressのファイル命名規則
・{$slug}.php
・{$slug}-{$name}.php
例えば、投稿の個別ページを読み込みたい場合に、そのテンプレートのファイル名が「single.php」の場合は、「get_template_part( ’single’ );
」となります。
「single-product.php」という個別のテンプレートを呼び出したい場合は、「get_template_part( ’single’, ‘product’ );
」となります。
ファイルが深い階層に入っている場合
テンプレートファイルのパスの指定は、テーマディレクトリからの相対パスを記述します。
上記例では、single.phpはテーマディレクトリの直下にあるため、’single.php’とすればOK。もし、更に深い階層構造にある場合は、ディレクトリ名/で階層を指定します。
例えば、「wp-content > themes > テーマディレクトリ名 > template-parts > post > content-image.php」のファイルを呼び出したい場合は以下のように指定します。
get_template_part( ’template-parts/post/content’, ‘image’ );
WordPressのファイル読み込み順序(ファイル階層)
WordPressがファイルを読み込む順序について補足しておきます。
WordPressはファイル名によって優先的に読み込むファイルを分けています。例えば投稿ページの場合、優先度の高い順に以下のようになります。
投稿ページのファイルの読み込み優先順位
・single-{post_type}.php
・single.php
・singular.php
・index.php
もし1~3のファイルが作成されていない場合は、index.phpが使われます。ちなみに、index.phpはWordpressを構築するときに必須のファイルです。
これらは、Wordpressが自動で判断するものですが、get_template_part関数を使えば、他のテンプレートを自分で選択して埋め込めるようになります。
投稿ページ以外のフィアル階層は以下のようになっています。