【WordPress】is_page()で固定ページを判定する方法:基本から実務的な応用まで

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、スラッグ、またはタイトルを指定します。
| 指定方法 | コード例 | おすすめ度 | 理由 |
|---|---|---|---|
| ページID | is_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()以外にも様々な関数が用意されています。
- すべての固定ページ:is_page()
- 特定のページ:is_page(‘slug’)
- トップページ:is_front_page()
- テンプレート単位:is_page_template(‘filename.php’)
サイト制作の現場では、スラッグが変更される可能性を考慮してページIDで管理するか、デザインの共通化のためにカスタムページテンプレートを作成してis_page_template()で分岐させる手法が一般的です。
WordPressを使ってWeb制作を行われている方は、参考にしていただければ幸いです。






















