WordPressで条件分岐タグを使ってテンプレートを切り替えるとき、よく登場するのが is_home()
と is_front_page()
。
この2つは名前が似ているため混同されがちですが、意味と使いどころは異なります。
この記事では、それぞれの違いと使い方を解説します。
目次
「ホームページの表示」設定とは?
WordPress管理画面の「設定」→「表示設定」にある「ホームページの表示」は、トップページに何を表示するかの設定です。

この項目には2つの選択肢があります:
- 最新の投稿
→ サイトのトップページ(フロントページ)に投稿一覧が表示されます。 - 固定ページ
→ 任意の固定ページをトップページ(ホーム)として表示することができます。
is_home() とは?
is_home()
は、「投稿一覧ページ」であるかどうかを判定するための条件タグです。
WordPressのデフォルトでは、トップページに最新の投稿一覧が表示されているため、is_home()
はトップページで true
を返します。
ただし、固定ページをフロントページに設定している場合は話が変わります。
具体例:
条件 | is_home() の結果 |
---|---|
デフォルトのトップページ(投稿一覧) | true |
固定ページがフロントページの場合 | ホームページでは false 投稿ページでのみ true |
is_front_page() とは?
is_front_page()
は、「サイトのフロントページ(トップページ)」であるかどうかを判定します。
これは、管理画面の「設定」→「表示設定」で指定されているトップページが対象です。
投稿一覧ページであっても、固定ページであっても、フロントページとして設定されていれば true
を返します。
具体例:
条件 | is_front_page() の結果 |
---|---|
投稿一覧がトップページ | true |
固定ページがトップページに設定 | true(その固定ページでのみ) |
実際のコード例
投稿一覧ページにだけ処理を追加する場合:
if ( is_home() ) {
echo 'これは投稿一覧ページです。';
}
フロントページだけに処理を追加する場合:
if ( is_front_page() ) {
echo 'これはフロントページです。';
}
is_home() と is_front_page() の併用注意点
is_home() && is_front_page()
が true
になるのは、トップページが「最新の投稿」になっている場合だけです。
テーマで、is_home() && is_front_page()
がよく使われるので、何も考えずに書いてしまうと、フロントページを固定ページにした場合、不具合が発生する可能性があるので注意しましょう。
if ( is_home() && is_front_page() ) {
// フロントページが投稿一覧の場合、実行される
}
これが成立するのは、フロントページが投稿一覧のままになっている場合のみです。
まとめ
判定対象 | is_home() | is_front_page() |
---|---|---|
投稿一覧ページ | ○ | ○ |
固定トップページ | × | ○ |
投稿の個別ページ | × | × |