今回は、別ファイルを読み込むget_template_part関数の使い方を解説します。
get_template_part関数は、WordPressのサイト制作で頻繁に使う関数なので、必ず使い方は覚えておきましょう。
get_template_part関数の引数
get_template_part関数には、3つの引数を入れることができます。
get_template_part( $slug, $name, $args );
$slug
には、テーマルートディレクトリからのパス、$name
にはファイル名のハイフンの後に続く文字列(この説明は後述します)、$args
はテンプレートに配列を渡したい時に使います。
基本的な使い方
incフォルダにあるtemplate.phpファイルを読み込みたい場合、以下のように記述します。
<?php get_template_part( 'inc/template', ); ?>
この時、.php拡張子は不要です。
また、どのディレクトリからでもテーマルートからのパスが入ります。
第二引数の使い方
incフォルダに、template-post.phpというファイルがあったとします。
そうしたら、次のように取得ができます。
<?php get_template_part( 'inc/template', 'post' ); ?>
template-〇〇の〇〇を第二引数に記述します。
<?php get_template_part( 'inc/template-post' ); ?>
このように記述しても、template-post.phpファイルを取得することができますが、第二引数を使うことで以下のようなことができます。
<?php
$post_type = get_post_type();
get_template_part( 'inc/template', $post_type );
?>
template-page.phpやtemplate-post.phpがあった場合、第二引数を使うことでスッキリとした記述ができます。
第三引数(配列)の使い方
第三引数に引数を入れることで、読み込んだファイルに配列の変数を渡すことができます。
第二引数が不要な場合は、nullを入れます。
<?php
$var = array(
'title' => 'Example',
'description' => 'This page is Example.'
);
get_template_part( 'inc/template', null, $var );
?>
テンプレート側では、$args変数で第三引数の配列を取得できます。
<?php
$title = $args['title'];
$description = $args['description'];
?>
<h1><?php echo $title; ?></h1>
<p><?php echo $description ?></p>
template.phpに値を渡すことができました。
実際には、$args変数にキーが設定されているか確認した方がいいので、以下のように記述した方が安全です。
<?php
$title = isset( $args['title'] ) ? $args['title'] : '';
$description = isset( $args['description'] ) ? $args['description'] : '';
?>
<h1><?php echo $title; ?></h1>
<p><?php echo $description ?></p>
できればis_string関数で型の判定もしておきたいところですが、長くなるので省略します。
get_template_part関数で1ファイルの中身をスッキリさせよう
1つのファイルに長々とコードが書かれていると、とても見づらくなってしまいます。
get_template_part関数でファイルを分割しておくと、1ファイルのコード量が少なくなり見やすくなります。
get_template_part関数でパーツを使い回す
同じようなコードを何度も記述すると、手間が増えますし、メンテナンスが面倒になります。
例えば、category.phpやtag.phpのようなテンプレートには、同じようなコードが入ると思います。
<?php get_template_part( 'layout', 'archive' ); ?>
同じようなコードはテンプレートにして、get_template_partを使って使い回すのが便利です。