WordPressで
■特定の固定ページだけに処理を適用したい、
あるいは
■デザインを出し分けたい
ときに欠かせないのがis_page()関数です。

この記事では、is_page()関数の基本的な使い方から、IDやスラッグを使った判定方法、実務で役立つ応用テクニックまで、最新の情報に基づいて分かりやすく解説します。

is_page() の基本的な使い方

WordPressで固定ページであるかどうかをシンプルに判定するには、
引数を指定せずにis_page()を使用します。

固定ページかどうかを判定する

<?php if ( is_page() ): ?>
固定ページで表示したい内容
<?php endif; ?>

is_page()の基本的な使い方はこんな感じになります。

固定ページとそれ以外で処理を分ける

<?php if ( is_page() ): ?>
固定ページで表示したい内容
<?php else: ?>
固定ページ以外(投稿ページやアーカイブなど)で表示したい内容
<?php endif; ?>

is_page()で特定の固定ページを判定する(ID・スラッグ)

WordPressで特定のページだけに処理を限定したい場合は、
is_page()の引数にページIDスラッグ、またはタイトルを指定します。

指定方法コード例おすすめ度理由
ページIDis_page(7)★★★開発・本番環境でIDが同じなら最も確実
スラッグis_page(‘contact’)★★★可読性が高く、推奨される方法
タイトルis_page(‘お問い合わせ’)★☆☆変更に弱いため非推奨

具体的な記述例

引数を使用する場合の具体的なコードはこのような感じになります。

// IDで指定(数値として渡す)
<?php if ( is_page(123) ): ?>
表示したい内容
<?php endif; ?>

// スラッグで指定(文字列として渡す)
<?php if ( is_page(‘about-us’) ): ?>
表示したい内容
<?php endif; ?>

// タイトルで指定
<?php if ( is_page(‘会社案内’) ): ?>
表示したい内容
<?php endif; ?>

複数の固定ページをまとめて判定する

複数のページを対象にしたい場合は、配列(array)を使って指定します。

【注意】is_page(‘a’, ‘b’)のように引数を複数並べることはできません。必ずarray()または短縮構文の[]で囲む必要があります。

正しい記述例①

<?php if ( is_page( array(‘a’, ‘b’, “c”) ) ): ?>
表示したい内容
<?php endif; ?>

正しい記述例②

<?php
// サイトマップ(ID:10) または プライバシーポリシー(slug:privacy) の場合
if ( is_page( [10, ‘privacy’] ) ):
?>
<!– 1カラム用のレイアウト –>
<div class=”one-column”>…</div>
<?php else: ?>
<!– それ以外の固定ページは2カラム –>
<div class=”two-column”>…</div>
<?php endif; ?>

配列で複数ページを指定する場合、上記のように記事IDとスラッグが混在していてもOKです。

知っておくと便利な関連関数と注意点

フロントページ(トップページ)の判定

固定ページを「ホームページ」として設定している場合、is_page()関数だけでは不十分なことがあります。

  • is_front_page(): 設定に関わらず、サイトのトップ画面であればtrueを返します。

ページテンプレートによる判定

特定の「固定ページテンプレート」を適用しているページを判定したい場合は、スラッグやIDよりもis_page_template()を使うのが最も効率的です。

if ( is_page_template(‘templates/custom-layout.php’) ) {
// 特定のテンプレートを使っている時の処理
}

is_singular()との違い

is_singular()は、固定ページだけでなく「投稿の個別ページ」や「カスタム投稿タイプの個別ページ」もすべて含めて判定します。

// 固定ページ、投稿、カスタム投稿、添付ファイルのいずれか
if ( is_singular() ) { … }

// 投稿(post)か固定ページ(page)のいずれか
if ( is_singular( [‘post’, ‘page’] ) ) { … }

まとめ:使い分けのポイント

こんかいは、WordPressでよく使用されるis_page()関数について詳しくまとめました。
また、WordPressではis_page()以外にも様々な関数が用意されています。

  1. すべての固定ページ:is_page()
  2. 特定のページ:is_page(‘slug’)
  3. トップページ:is_front_page()
  4. テンプレート単位:is_page_template(‘filename.php’)

サイト制作の現場では、スラッグが変更される可能性を考慮してページIDで管理するか、デザインの共通化のためにカスタムページテンプレートを作成してis_page_template()で分岐させる手法が一般的です。

WordPressを使ってWeb制作を行われている方は、参考にしていただければ幸いです。