クラシックテーマを制作されたことがある方であれば知らない人はいないといっても過言ではない関数 get_header()
と get_footer()
と get_sidebar()
を、本記事では深掘りしてみようと思います。
get_header() 関数とは
ヘッダーテンプレートを読み込む関数です。
ヘッダーテンプレートとは、クラシックテーマ内に header.php
といったサイトヘッダーによく利用するテンプレートを予め用意しておき、各テンプレートから呼び出す際に利用されることが多いです。
例えば、WordPress 標準テーマの Twenty Twenty-One に内包されている index.php
を確認してみると、17行目に get_header()
が記述されています。
また、同じく single.php
にも12行目に記述があることが確認できます。
このように、index.php
や single.php
といったテンプレートファイルから header.php
を呼び出すために利用されます。
呼び出さない場合は、header.php
に記述してある内容をテンプレート内の希望する箇所に記述することで、全く同じ動作をさせることはできます。
しかし、同じ記述を繰り返すのであれば、その記述を一元管理し呼び出す方がメンテナンスしやすくなります。WordPress テーマではよくこのような手法を header.php
に限らず用いられています。(get_template_parts()
で呼び込む箇所など)
フック
do_action( ‘get_header’, $name, $args )
ヘッダーテンプレートが読み込まれる前に発火するアクションフックです。サンプルコードはこちらです。
add_action(
'get_header',
function () {
echo "サイトヘッダー読み込み前に発火します";
}
);
get_footer() 関数とは
get_header()
がヘッダーテンプレートを呼び出す関数であるのと同じように、get_footer()
はフッターテンプレートを呼び出す関数です。
WordPress 標準テーマ Twenty Twenty-One でも使われています一例としては、index.php
の38行目に記述されています。
他にも多くのテンプレートに記述が見られます。ぜひ調べてみてください。
フック
do_action( ‘get_footer’, $name, $args )
フッターテンプレートが読み込まれる前に発火するアクションフックです。サンプルコードはこちらです。
add_action(
'get_footer',
function () {
echo "サイトフッター読み込み前に発火します";
}
);
get_sidebar() 関数とは
get_header()
がヘッダーテンプレートを呼び出す関数、get_footer()
がフッターテンプレートを呼び出す関数、そして get_sidebar()
はサイドバーテンプレートを呼び出す関数になります。
よく利用されるケースとしては、投稿ページ( single.php
)がサイドバーを持つレイアウトの場合、get_sidebar()
でサイドバーテンプレートを読み込むことがあります。
そして、読み込むためには sidebar.php
というファイルを用意しておく必要があります。
使い方やこれから説明するパラメーターは、これら3つの関数すべて同じです。一緒に覚えておきましょう。
フック
do_action( ‘get_sidebar’, $name, $args )
サイドバーテンプレートが読み込まれる前に発火するアクションフックです。サンプルコードはこちらです。
add_action(
'get_sidebar',
function () {
echo "サイドバー読み込み前に発火します";
}
);
パラメーター
$name
特別なヘッダーテンプレートの名前を指定することができます。初期値は null
です。
例えば、テーマ内に header-home.php
という特別なヘッダーテンプレートを用意したとします。こちらを呼び出す際には、以下のように記述することで呼び出すことができます。
get_header( 'home' );
レイアウトやテンプレートによって、読み込むヘッダーテンプレートを切り替える際にはとても便利です。
WordPress 2.8 から利用できるようになったパラメーターです。
$args
呼び出すヘッダーテンプレートに引数を渡すことができます。
例えば、表示したいヘッダーテンプレートに以下のように引数を渡すとします。
get_header( 'home', array( 'name' => 'Koji', 'sex' => 'Male' ) );
こうした場合に、header-home.php
には以下のように書くことで、引数を表示することができます。
<p>My name is <?php echo $args['name']; ?>, My sex is <?php echo args['sex']; ?>.</p>
この引数自体も動的にすることで、面白いことも実現できそうです。
こちらは比較的新しいパラメーターで、WordPress 5.5 から導入されたものです。
使い方
よく利用される方法としては、表示しているテンプレートによってヘッダーテンプレートを切り替えるというものでしょう。
if ( is_home() ) { // ブログ投稿一覧であれば
get_header( 'home' ); // header-home.php を読み込む
} elseif ( is_404() ) { // 404ページであれば
get_header( '404' ); // header-404.php を読み込む
} else { // それ以外であれば
get_header(); // header.php を読み込む
}
get_header()
部分を get_footer()
に書き換えることでフッターテンプレートを分岐して読み込むこともできます。
ちなみにですが、
get_header( 'home' );
と記述しても header-home.php
テンプレートが存在しない場合には、header.php
が代わりに読み込まれます。
get_footer()
も同じように、
get_footer( 'home' );
と記述しても footer-home.php
テンプレートが存在しない場合には、footer.php
が代わりに読み込まれます。
get_sidebar()
も同様に動作します。
get_sidebar( 'home' );
と記述することで sidebar-home.php
テンプレートを読み込みます。指定したテンプレートが存在いない場合には、sidebar.php
が代わりに読み込まれます。
まとめ
get_header()
と get_footer()
そして get_sidebar()
の3つの関数を紹介してみましたが、いかがでしたでしょうか?
普段何気なく使っている関数ですが、ちょっと踏み込んで調べてみたり試してみたりすることで、新しい発見があるかもしれません。ぜひこれらの関数で遊んでみてください。
ちなみに僕は、今回調べるまで2つ目のパラメーター $args
があることを完全に忘れていました。そもそも認知していたかどうかも疑わしいです。こういった発見もあるので再確認は大切ですね。