WordPressでトップページとブログページで、表示、非表示をしたい場合の処理

wordpress-image

テンプレートによって、違うので、要確認ですが、担当したサイトはhome.phpをメインにトップページの表示がされていました。

 

サイドバーがトップページにて、表示されていたので、これを削除したいと思いました。

<?php if ( !is_home() && !is_front_page() ) : ?>
//ここにホームとフロントページにだけ表示させてくない情報を書く
<?php endif; ?>

PHPが全くわからない方に説明すると、!は否定の意味。 && は、かつという意味で
ホームでないかつフロントページでない場合、表示してくださいという意味になります。
また、//はコメントアウトといって、この行に書くものは、プログラムとしては、認識されません。

WordPressではトップページを表示させるものとして、

  • index.php
  • home.php
  • front-page.php

の三種類があります。

優先順位は下記のようになっています。
front-page.php > home.php > index.php

is_home() はメインブログページが表示されている場合です。
is_front_page() は投稿・固定ページにかかわらず、サイトのフロントページが表示されている場合です。

ただ、最初にお伝えした形で書くことができますが、公式サイトを見ると

if ( is_front_page() && is_home() ) {
// デフォルトホームページ
} elseif ( is_front_page() ) {
// 固定ペーシを使ったホームページ
} elseif ( is_home() ) {
// ブログページ
} else {
// それ以外
}

という、書き方が正しいです。

常に、公式サイトで確認するのがいいと思います。

WordPressはどうしても、PHPを触ったことがない人や知らない人がカスタマイズをするケースも多いので、
適当に書くと失敗する時もあるので、注意です。

WordPressの参考書をみると、endif;で閉じてあるのが多いのですが、
どうも気持ちが悪いです。

コメント

タイトルとURLをコピーしました