ワードプレスの関数get_template_partとPHPの関数includeやrequire(include_onceやrequire_once)の違いを解説いたします。

get_template_part とは?

ワードプレスのget_template_partは下記のような書式で利用します。

get_template_part( 'nav' );           // nav.phpが読み込まれ実行されます
get_template_part( 'nav', '2' );      // nav-2.phpが読み込まれ実行されます
get_template_part( 'nav', 'single' ); // nav-single.phpが読み込まれ実行されます

一見これはPHPの関数

include( 'nav.php' ); 

と同じ動作のように見えますがいくつか違いがございます。

get_template_partは子テーマを考慮する

例えば

get_template_part( 'nav' );

というコードが親テーマにあった場合、かつ子テーマが使用されていてnav.phpが子テーマのフォルダにあった場合、子テーマのnav.phpが読み込まれます。

include( 'nav.php' ); 

の場合(親テーマに記載がある場合)は直下のnav.phpが読み込まれますので子テーマで同名のファイルがあっても読み込まれません。

この為、子テーマの作成を考慮したテーマではget_template_partを利用した方がよいという事になります。

get_template_partはactionフックを使える

get_template_partは下記のようなコードでテンプレートが読み込まれたときに実行する処理を追加できます。

function get_template_part_event($slug, $name, $templates, $args){
   //テンプレートが読み込まれたときに実行する処理
}
// アクションの追加
add_action( "get_template_part", "get_template_part_event" , 10, 4);

このアクションはあまり使われることはありませんが、任意のテンプレートが読みこまれたときに何らかの処理を実行したい時などに使用できます。

ご参考になりましたら幸いです。

WordPress ワードプレスのPHPプログラムのコーディングのご依頼・ご相談はワードプレスドクターまでお気軽にお送りください