is_home() と is_front_page() の違いと動作パターン、「ホームページの表示(フロントページの表示)」設定との関係性について解説していきます。各関数の特性についても詳細に解説しています。
「ホームページの表示」という項目は、以前までの古いバージョンのWordPressでは「フロントページの表示」という表記になっていました。
目次
- is_home() と is_front_page() の違い(簡単な説明と注意点について)
- is_home() と is_front_page() の動作パターン(画像で直感的に理解)
- is_home() と is_front_page() の対応表(表で全体像を把握)
- is_home 関数
- is_front_page 関数
is_home() と is_front_page() の違い
is_home()
は「最新の投稿一覧が表示されたページ」の判定に利用でき、is_front_page()
は「固定ページが表示されたトップページ」の判定に利用できるという違いがあります。
ただし、「# is_home 関数」と「# is_front_page 関数」の動作は、管理画面側の表示設定によって、その結果に違いが生じる場合がある点に注意が必要です(次項を参考)。
また「# is_home 関数は必ずしもトップページを判定するものではない」という点にも注意してください。加えて、「# is_front_page 関数」については、多くの場合はトップページの判定に利用できますが、例外がある点にも注意してください。
is_home() と is_front_page() の動作パターン
- 管理画面の「
設定 → 表示設定 → ホームページの表示
」で「最新の投稿」を選択している場合、トップページにおけるis_home()
とis_front_page()
の両結果はtrue
となる。- (この場合のトップページには「最新の投稿一覧」が表示されている)
- 管理画面の「
設定 → 表示設定 → ホームページの表示
」で「固定ページ」を選択し、「ホームページ」に任意のページを指定している場合、トップページにおけるis_front_page()
の結果のみがtrue
となる。- (この場合のトップページには「固定ページ」が表示されている)
- 管理画面の「
設定 → 表示設定 → ホームページの表示
」で「固定ページ」を選択し、「投稿ページ」に任意のページを指定している場合、任意のページにおけるis_home()
の結果のみがtrue
となる。- (この場合の任意のページには「最新の投稿一覧」が表示されている)
- 管理画面の「
設定 → 表示設定 → ホームページの表示
」で「固定ページ」を選択し、「ホームページ」の指定を省略した場合、トップページにおけるis_front_page()
の結果はfalse
となる。- (この場合のトップページには「最新の投稿一覧」が表示されている。)
管理画面側の設定はWordPress管理画面の設定 → 表示設定 → ホームページの表示
にて確認できます。
is_home() と is_front_page() の対応表
is_home()
とis_front_page()
の動作は管理画面「ホームページの表示」で指定された表示設定によって、その結果に違いが生じます。設定毎の結果を以下の対応表にまとめています。
「ホームページの表示」はWordPress管理画面の「設定 → 表示設定 → ホームページの表示
」にて確認。
「ホームページの表示」の設定 | is_home() | is_front_page() | is_page() | 表示中のURLとその内容 |
---|---|---|---|---|
最新の投稿 | true | true | false | "/"(トップページ)投稿一覧 |
固定ページ → ホームページ | false | true | true | "/"(トップページ)固定ページの内容 |
固定ページ → 投稿ページ | true | false | false | "/slug/"(固定ページ)投稿一覧 |
「ホームページの表示」の設定 | is_home() | is_front_page() | is_page() | 表示中のURLとその内容 |
---|---|---|---|---|
固定ページ → ホームページ(未指定) | true | false | false | "/"(トップページ)投稿一覧 |
固定ページ → 投稿ページ | true | false | false | "/slug/"(固定ページ)投稿一覧 |
※ "/"(トップページ)→ "http://localhost/", "http://localhost/wp/"等
※ "/slug/"(固定ページ)→ "http://localhost/slug/", "http://localhost/?page_id=9"等
このように、両関数を利用する際には、両関数の性質の違いと、管理画面の設定を十分に考慮して利用しなければなりません。
両関数の仕様については次項よりご確認ください。
is_home 関数
is_home()
は最新の投稿の一覧が表示されているページでtrue
を返す関数です。
最近の投稿の一覧が表示されているページとは、いわゆるインデックス・ページのこと。公式には「ブログ投稿インデックスページ」と呼ばれている。
注意点として、is_home関数はホームページ(トップページ)以外のページでもtrue
を返す場合があります。
実際に、「投稿ページ」として設定された任意の固定ページが表示された場合にもtrue
を返します。
管理画面 → 設定 → 表示設定 → ホームページの表示 → 固定ページ → 投稿ページ
に任意の固定ページを指定している場合。
このパターンの場合は、固定ページで投稿一覧が表示されるようになっています。
ホームページに固定ページの内容を表示している場合にはfalse
を返します。
管理画面 → 設定 → 表示設定 → ホームページの表示 → 固定ページ → ホームページ
に任意の固定ページを指定している場合。
is_front_page 関数
is_front_page()
は管理画面の「設定 → 表示設定 → ホームページの表示」で「最新の投稿」を選択している場合に、トップページでtrue
を返す関数です。
また、is_front_page関数は固定ページが指定されたトップページでもtrue
を返します。
管理画面 → 設定 → 表示設定 → ホームページの表示 → 固定ページ → ホームページ
に任意の固定ページを指定している場合。
このパターンの場合は、トップページに任意の固定ページが表示されるようになっています。このような表示形態を「静的フロントページ」と呼びます。
なお、例外的な動作として、管理画面の「設定 → 表示設定 → ホームページの表示」で「固定ページ」を選択している状態で「ホームページ」を未指定にした場合、is_front_pageはfalse
を返す点に注意が必要となります。
この場合は、トップページではブログ投稿インデックス(最新の投稿の一覧)が表示された状態になり、見かけ上は管理画面の「設定 → 表示設定 → ホームページの表示」で「最新の投稿」を選択している状態と同一のものになりますが、is_front_pageはfalse
を返します。
これはis_front_pageがあくまで固定ページ(静的フロントページ)の表示状態を表す関数であるためです。違和感のある挙動ではありますが、逆に見方を変えれば、表示設定で「最新の投稿」を選択した場合の挙動のほうが例外的であるという解釈ができます。
参考までにis_front_page関数の判定ロジックを示しておきます。
function is_front_page() {
// 「ホームページの表示」に「最新の投稿」が選択されている場合
if ( 'posts' === get_option('show_on_front') &&
is_home() // is_homeの結果に依存
) {
return true;
}
// 「ホームページの表示」に「固定ページ」が選択されている場合
if ( 'page' === get_option('show_on_front') &&
// 「ホームページ」の存在と妥当性を判定
get_option('page_on_front') &&
is_page(get_option('page_on_front'))
) {
return true;
} else {
return false;
}
}