WordPressには様々な条件分岐タグがあり、その中にis_front_page()とis_home()というタグがあります。この2つの条件分岐は、動きが似ていてちょっとややこしいですよね。
Codexでは、以下のように説明されています。
メインページ
is_home()
メインブログページが表示されている場合。これは、サイトにある時系列のブログコンテンツを表示するページです。もしあなたがフロントページに固定ページを設定していた場合(以下を参照)、Administration > Settings > Readingであなたが「投稿ページ」として設定したページでのみ、trueになります。
フロントページ
is_front_page()
投稿・固定ページにかかわらず、サイトのフロントページが表示されている場合。true を返すのは、表示設定の「トップページの表示」として「最新の投稿」を設定している場合には、メインブログページが表示されるとき
「固定ページ」を設定している場合には、「フロントページ」として選択した固定ページが表示されるとき
う、うーむ、、、なんともややこしいですね。
今回は、これらの条件分岐の違いについてご紹介したいと思います。
フロントページの表示が「最新の投稿」になっている場合
WordPress管理画面の[設定] – [表示設定]で、フロントページの表示が「最新の投稿」になっている場合は、どちらもサイトのトップページかどうかで分岐させます。
つまり、is_front_page()もis_home()も同じ動きになります。これがややこしくしている原因でしょうね。
フロントページの表示が「固定ページ」になっている場合
[設定] – [表示設定]で、フロントページの表示が「固定ページ」になっている場合は、以下のように動きが異なります。
is_front_page():フロントページ(サイトトップ)かどうか
is_home():ブログのトップページ(新着一覧)かどうか
ここが、これら条件分岐の肝となる部分ですね。
あとがき
仕組みがわかってしまえばなんてことないですね。
私は、フロントページの表示が「最新の投稿」になっている場合も、サイトのトップページかどうかで条件分岐させる際はis_front_page()を使っています。is_home()を使った方がいいんですかね・・・(>_<)未だにどちらが正解かわかりませんが、”どちらでもいい”が正解でしょうね。