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

WordPress個別サポート

条件分岐タグis_pageは表示中のページが特定のページかどうか調べる命令ですが、複数ページを指定する場合は注意が必要です。よくある書き間違いの例に注意しながら、is_pageで複数ページを指定するコードを紹介します。

条件分岐タグis_pageの使用例

条件分岐タグis_pageを使うと、特定のページのみで処理を実行することができます。次の例では、特定のページのみで表示されるパーツを作成しています。

<?php if(is_page(8)) : ?>
特定のページだけに表示されるパーツ
<?php endif; ?>

is_page(8)によってページIDが「8」のページのみが表示対象になります。

ページIDではなくスラッグで指定することもできます。

<?php if(is_page('company')) : ?>
特定のページだけに表示されるパーツ
<?php endif; ?>

スラッグが「company」のページのみに、このパーツが表示されます。

スラッグが「company」のページのみに表示されるパーツ
スラッグが「company」のページのみに表示されるパーツ

is_pageで複数ページを指定する場合

複数ページを表示対象にしたい場合は、is_pageで複数ページを指定することができます。カンマで区切って指定しますが、次のような記述は間違いです。うまくいかないので注意してください。

<?php if(is_page('company', 'service', 'contact')) : ?>
特定のページだけに表示されるパーツ
<?php endif; ?>

スラッグやページIDを単純にカンマで区切るのではなく「array」という命令で囲む必要があります。これにより、スラッグが「company」「service」「contact」のページが表示対象になります。具体的には次のようなコードになります。

<?php if(is_page(array('company', 'service', 'contact'))) : ?>
特定のページだけに表示されるパーツ
<?php endif; ?>

arrayとは複数の値を指定するときに使うPHPの構文です。わかりづらいかもしれないので、arrayの部分だけ抜き出しておきます。

array('company', 'service', 'contact')

条件分岐タグis_pageで複数のページを指定する場合は、このように記述する必要があります。

ちなみに、個別記事を対象にするis_singleでも同じです。

「指定ページ以外」の書き方

ここまでに紹介したコードは指定したページのみに表示したいパーツでしたが、逆に指定したページ以外にパーツを表示したい場合は、is_pageの前に「!」を付加します。半角なので注意してください。

<?php if(!is_page('company', 'service', 'contact')) : ?>
指定ページ以外に表示されるパーツ
<?php endif; ?>

この例ではスラッグが「company」「service」「contact」のページ以外が表示対象になります。

なぜ「!」で「以外」になるのか、なぜis_pageを使うと指定ページが表示対象になるのかなど、基本的なPHPの仕組みから理解したい方は、WordPress個別サポートで対応します。気軽にご相談ください。

WordPressのPHP