IT女子のお気に入りフォルダ

管理人の備忘録と実践を兼ねた(出来るだけ)役に立つ情報を配信するブログです。

WordPressで任意のテンプレートパーツを読み込む get_template_part();

WordPressで自分で作った任意のテンプレート(パーツ)をget_template_part()関数を使って他のテンプレートファイルで読み込む方法です。


どんなときに使うのか

例えば、archive.php や archive-[カスタム投稿タイプ].php で投稿が0件のときに表示したい「お探しのページは見つかりませんでした」といった共通のパーツを複数のテンプレートファイルに記述をしてしまうと、少し修正したいと思ったときに何箇所も変更しなければならないというような事態が発生してしまいます。そういった事態をなくすことが出来ます。

他にも、ページャーの表示部分だったり、ヘッダーに含まれるグローバルナビなどをパーツとして別ファイルにして読み込むようにすると、後からテンプレートをみたときにスッキリしていて、どこからどこまでが対象部分の記述なんだー?っと頭を悩ますこともありません。

get_template_part()の使い方

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

$slug・・・必須。自分で作った任意のテンプレートのスラッグ
$name・・・特定テンプレートの名前

例えば、

<?php get_template_part( 'content', 'news' ); ?>

と記述すると、任意で作った「content-news.php」が読み込まれます。

get_template_part()の使用例

例:その1

ページャー部分の記述を pagenav.php という名前のファイルに書き、表示したい archive.php の対象個所に以下のように記述します。

<?php get_template_part( 'pagenav' ); ?>

例:その2

event というカスタム投稿タイプのときだけ、ページャーの表示を変えたいときなどは以下のように記述します。

<?php
if ( is_post_type_archive('event') ) :
     get_template_part( 'pagenav', 'event' );
else:
     get_template_part( 'pagenav' );
endif;
?>

ちなみに、
上のように、get_template_part( ‘pagenav’, ‘event’ );と記述した場合、WordPressは、まず「pagenav-event.php」というファイルを探し、見つからなければ pagenav.php を読み込みます。

ごちゃごちゃしたソースは読みづらいので、このパーツ分けするオブジェクト指向的な方法は、私は好きです。けど、むやみやたらとパーツに分けてしまうと、今度はファイルがごちゃごちゃしてくるので、パーツ分けにもある程度ルールを持って本末転倒にならないようにしましょう。