get_header() get_footer() get_sidebar()を深掘りする

投稿日 :

クラシックテーマを制作されたことがある方であれば知らない人はいないといっても過言ではない関数 get_header()get_footer()get_sidebar()を、本記事では深掘りしてみようと思います。

目次

get_header() 関数とは

ヘッダーテンプレートを読み込む関数です。

ヘッダーテンプレートとは、クラシックテーマ内に header.php といったサイトヘッダーによく利用するテンプレートを予め用意しておき、各テンプレートから呼び出す際に利用されることが多いです。

例えば、WordPress 標準テーマの Twenty Twenty-One に内包されている index.php を確認してみると、17行目に get_header() が記述されています。

また、同じく single.php にも12行目に記述があることが確認できます。

このように、index.phpsingle.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 があることを完全に忘れていました。そもそも認知していたかどうかも疑わしいです。こういった発見もあるので再確認は大切ですね。

コーディングや
WordPress開発のリソースが足りない!

オレインデザインでは、デザインデータからの HTML コーディングから WordPress テーマ・プラグイン開発まで幅広くウェブ制作に対応しています。

お気軽にお問い合わせください。

WordPress 6.5.x 対応版を出版しました

WordPress デフォルトテーマ Twenty Twenty-Four を使って、シンプルなブログやポートフォリオサイト、そしてコーポレートサイトを作りながら、ブロックテーマやサイトエディターの基本を理解することができます。