wordpressにおいてトップページかどうか判定する関数にis_home()とis_front_page()ってのがある。
この二つ、非常に分かりづらいのですよね。
というのも個人の設定に依存するので。
今回はそんなお話。
ソースを見れば分かりやすいかもしれないけど、is_front_page()のソースはこうなっている。
[php]
public function is_front_page() {
// most likely case
if ( 'posts' == get_option( 'show_on_front') && $this->is_home() )
return true;
elseif ( 'page' == get_option( 'show_on_front') && get_option( 'page_on_front' ) && $this->is_page( get_option( 'page_on_front' ) ) )
return true;
else
return false;
}
[/php]
下記オプションのラジオボタン部分がshow_on_front、セレクトボックスがpage_on_frontね。
つまりwordpressの表示設定において「フロントページの表示」を「最新のページ」にしている場合はis_front_page()とis_home()は同じ動きします。
でも、「固定ページ」にしている場合、フロントページを設定していないとis_front_page()はfalse返します。
「固定ページ」にしていて投稿ページにした場合、is_home()がtrueを返すのです。
しっかし分かりづらい仕様ですな。
この関数をテーマ上で使うのならpage.phpとhome.php両方用意するのがベターかね。
functions.phpもしくはプラグイン上で使うのならif文に両方書いてORでつなげるのがいいのかもしれないっすな。
自分もたまーにやるけど、トップページだけなにか出したいっていう改造をしたい場合は
ここらへん気をつけるといいですよ。