【注意点あり】is_page() やis_single() で複数ページを指定する方法

is_page()で複数ページを指定する方法

WordPressの条件分岐タグである is_page()is_single() で複数ページを指定する方法を解説します。

簡単な記述で設定できるので、PHPに詳しくない方でも問題ありません。

ただし、一つ注意点もあるのでそちらも解説していきます。

is_page() やis_single() で複数ページを指定する方法

is_page() は固定ページ、 is_single() は投稿ページであるかどうかを判定して条件分岐を設けるためのタグです。

これらは、()の中に引数を追加することで、下記の3種類のいずれかに合致するかどうかを判定することができます。

  • ID
  • スラッグ
  • タイトル
<?php if ( is_page( '51' ) ) : ?> //もしIDかスラッグかタイトルが51であれば

そして、引数には配列を渡すことが可能です。そうすることで、「これらの複数ページのいずれかに一致した場合」という条件を設定することができます

<?php if ( is_page( array( '51', 'company', '会社概要' ) ) ) : ?>
//もしIDかスラッグかタイトルが51かcompanyか会社概要のいずれかであれば

また、記述は冗長になりますが、orを表す || を使って複数ページのいずれかに合致するかを判定することもできます。

<?php if ( is_page( '51' ) || is_page( 'company' ) || is_page( '会社概要' ) ) : ?>
//もしIDかスラッグかタイトルが51かcompanyか会社概要のいずれかであれば
memo
51などの整数は ‘ ‘ で囲んでも囲まなくても大丈夫です。(cf. WordPress Codex 日本語版

「指定した複数ページのいずれでもない」という条件の設定方法

「指定した複数ページのいずれでもない」という条件を設定することもできます。

is_page()is_single()の前に ! (半角)をつければ、 if を「もし〜に合致しなければ」と否定の意味に変えることができます。

<?php if ( !is_page( array( '51', 'company', '会社概要' ) ) ) : ?>
//もしIDかスラッグかタイトルが51かcompanyか会社概要のいずれでもなければ

is_page() やis_single() で複数ページを指定するときの注意点

is_page()is_single() で複数ページを指定するときの注意点があります。

それは、引数ではIDとスラッグとタイトルが区別されないことです。

例えば、 is_page( '51' ) と記述した場合、大抵の場合においてそれはIDを意図してのものだと思いますが、もしスラッグやタイトルが51の固定ページがあれば、そのページは条件に合致していると判定されてしまいます

これを意識していないと意図と異なる条件が指定されてしまいかねませんので、注意してください。