1. WordPress

【WordPress】is_home() と is_front_page() の違いを徹底解説!

Share

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()
投稿一覧ページ
固定トップページ×
投稿の個別ページ××

参考リンク(公式ドキュメント)