【WordPress】get_template_partでパーツを読み込ませる方法

WordPressで実際にサイト作りをするときには「get_header」「get_footer」は使いますが、「get_template_part」はあまり使いません。ですが、自分で作る場合は「get_template_part」も使う場面があります。

「get_header」「get_footer」は常に使いますが、「get_template_part」はあまり機会が多くないので、メモしておきます。

読み込ませたいファイルの「置き場所」や「ファイル名」によって書き方が変えりますので、それぞれの使い方を見ていきます。

ファイル名による違い

ファイル名の違いだけを確認したいので、読み込ませたいファイルはテーマフォルダの直下に置いているとします。

「-」がない場合

ファイル名が「myparts.php」とします。この場合、下記で読み込ませることができます。

get_template_part('myparts');

「-」がある場合

ファイル名が「parts-myparts.php」とします。この場合、下記のどちらでも読み込ませることができます。

get_template_part('parts','myparts');
get_template_part('parts-myparts');

「get_template_part」は1つ目の引数に「-」より前、2つ目の引数に「-」より後を指定することができます。この理由は分類という理解で大丈夫です。「動物」の「犬」みたいな感じですかね。

ただ、「get_template_part(‘parts-myparts’);」でも取得できるので「-」は分類で分けるためにも使えますし、ただの名称の一部としても扱えるということです。どちらで利用するかは使う人次第です。

個人的には「-」がある場合は「get_template_part(‘parts’,’myparts’);」で取得した方が分かりやすい気はします。

ファイルの置き場所による違い

ファイルの置き場所の違いだけを確認したいので、読み込ませたいファイル名は「myparts.php」はとします。また、テーマフォルダ名は「mytheme」とします。

読み込ませたいファイルがテーマフォルダ直下にある場合

読み込ませたいファイルはテーマフォルダ直下にあるので「mytheme/myparts.php」にあることになります。この場合、下記で読み込ませることができます。

get_template_part('myparts');

読み込ませたいファイルがテーマフォルダ内のフォルダの中(1階層下)にある場合

テーマフォルダ内に「parts」というフォルダがあるとします。読み込ませたいファイルはその中にあるので「mytheme/parts/myparts.php」にあることになります。この場合、下記で読み込ませることができます。

get_template_part('parts/myparts');

注意点

テーマフォルダ内にある場合はパス指定は不要ですが、読み込ませたいファイルが下の階層にある場合は、テーマフォルダからの相対パスを書く必要があります

以上が「get_template_part」の基本的な使い方になるかと思います。次に一通り実例を書いておきます。

(参考)実例まとめ

テーマフォルダ名は「mytheme」です。下記は実際にWP上で検証した結果をまとめておきます。

1.mytheme/myparts.php

読み込ませたいファイルが「mytheme/myparts.php」にある場合は下記で読み込ませることができます。

get_template_part('myparts');

2.mytheme/parts-myparts.php

読み込ませたいファイルが「mytheme/parts-myparts.php」にある場合は下記のどちらでも読み込ませることができます。

get_template_part('parts', 'myparts');
get_template_part('parts-myparts');

3.mytheme/mydir/myparts.php

読み込ませたいファイルが「mytheme/mydir/myparts.php」にある場合は下記で読み込ませることができます。

get_template_part('mydir/myparts');

4.mytheme/mydir/parts-myparts.php

読み込ませたいファイルが「mytheme/mydir/parts-myparts.php」にある場合は下記のどちらでも読み込ませることができます。

get_template_part('mydir/parts', 'myparts');
get_template_part('mydir/parts-myparts');

まとめ

これで次回忘れた場合はここを見て思い出すことが出来そうです。