[WordPress]フロントページのみにコンテンツを表示する条件分岐

  • 更新日:
  • 公開日:

WordPressでフロントページのみにコンテンツを表示したい状況、あると思います。

「front-page.php」テンプレートに書くなり、is_front_page()で条件分岐できてしまうのですが、「表示設定>フロントページの表示」項目で固定ページを設定している場合を考慮した柔軟な条件分岐がしたかったのです。

結果とても見づらい条件分岐コードになってしまいましたが、間違ってはいないハズなので以下のコードで対応することに。

フロントページのみコンテンツを表示する条件分岐

  • フロントページかつ投稿一覧ページ
  • フロントページかつ投稿一覧ページではない
  • 2ページ目以降ではない

を掛け合わせています。

<?php if ( ( ( is_front_page() && is_home() ) || ( is_front_page() && ! is_home() ) ) && ! is_paged() ) : ?>
    <!-- フロントページのみのコンテンツ -->
<?php endif; ?>

非常に見づらい条件です…。もっと良い書き方があるかもしれません。

フロントページ、投稿ページに固定ページが設定されているかを判定(おまけ)

// フロントページに固定ページが割り当てられている
<?php if ( get_option( 'page_on_front' ) ) : ?>
    <?php
    // フロントページに割り当てられている固定ページのID
    echo get_option( 'page_on_front' );
    ?>
<?php endif; ?>

// 投稿ページに固定ページが割り当てられている
<?php if ( get_option( 'page_for_posts' ) ) : ?>
    <?php
    // 投稿ページに割り当てられている固定ページのID
    echo get_option( 'page_for_posts' );
    ?>
<?php endif; ?>

表示設定でフロントページや投稿ページに固定ページを割り当てるとWordPressのオプションに値が設定されますget_option()で「page_on_front」「page_for_posts」を指定すると固定ページのIDが返ってくるので、これで判定することが可能です。設定されていなければ「0」が返ってくるので、これらを使った条件分岐も書くことが可能でしょう。

書いた人

Symbol Mark

Ryoichi(しつ)

除菌ティッシュを買い込んで使いきれずによく乾かす人。

療養目的で退職し、どうやって生きていくか模索中。最近は勉強目的でLaravelやVue.js弄ったり、趣味で音で遊んでます。

※2019年10月16日現在ブログリニューアル中です。崩れなどが発生していたらすみません。

うぇぶ: @s_ryone