---
title: "get_header() get_footer() get_sidebar()を深掘りする"
canonical_url: "https://olein-design.com/blog/get_header-get_footer-get_sidebar"
language: "ja"
date_published: "2024-05-02T11:56:07+09:00"
date_modified: "2024-05-10T14:04:49+09:00"
content_type: "post"
author: "久野晃司"
taxonomies:
  category:
    - "WordPress"
  post_tag:
    - "General Template Tag"
    - "WordPress functions"
---

# 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()` が記述されています。

[埋め込みコンテンツ](https://github.com/WordPress/twentytwentyone/blob/ba9f20cad89163761185c0467b346ba42541ae22/index.php#L17)

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

[埋め込みコンテンツ](https://github.com/WordPress/twentytwentyone/blob/ba9f20cad89163761185c0467b346ba42541ae22/single.php#L12)

このように、`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行目に記述されています。

[埋め込みコンテンツ](https://github.com/WordPress/twentytwentyone/blob/ba9f20cad89163761185c0467b346ba42541ae22/index.php#L38)

[他にも多くのテンプレートに記述](https://github.com/search?q=repo%3AWordPress%2Ftwentytwentyone%20get_footer()&type=code)が見られます。ぜひ調べてみてください。

### フック

```
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()` の３つの関数を紹介してみましたが、いかがでしたでしょうか？

普段何気なく使っている関数ですが、ちょっと踏み込んで調べてみたり試してみたりすることで、新しい発見があるかもしれません。ぜひこれらの関数で遊んでみてください。

ちなみに僕は、今回調べるまで2つ目のパラメーター `$args` があることを完全に忘れていました。そもそも認知していたかどうかも疑わしいです。こういった発見もあるので再確認は大切ですね。

[埋め込みコンテンツ](https://developer.wordpress.org/reference/functions/get_header)

[埋め込みコンテンツ](https://developer.wordpress.org/reference/functions/get_footer)

[埋め込みコンテンツ](https://developer.wordpress.org/reference/functions/get_sidebar)
