WordPressで特定の固定ページにだけ表示させる場合に使う「is_page」

WordPressで特定の固定ページにだけ表示させる場合に使う「is_page」
関連キーワード
WordPress

WordPressでは固定ページというものがありまして、主にプロフィールページとかお問い合わせページのようなページで使われることが多いんですね。

単一のページは固定ページで作ることが多いため、「このページではこうしたい」っていう、その1ページのためだけのデザインや機能を追加したいこともありまして。

というわけで「とある固定ページ or それ以外のページ」というような条件で分岐させる方法をご紹介します。

固定ページかそうじゃないかという条件分岐

固定ページかどうかという条件分岐は「is_page」という関数を使います。

以前に書いたWordPressで1ページ目と2ページ目以降で違うものを表示する「is_paged」と一文字違いですが全く別物なのでお気を付けください。

では「is_page」関数を使った具体的な記述方法をご紹介していきます。

特定の固定ページ1ページだけ表示させる場合

まずは冒頭に書いたような「とある固定ページ or それ以外のページ」という条件分岐です。

下記のように記述して、数字が入ってるところに固定ページのIDを入れるだけ。

<?php if(is_page( '1' )): ?>
特定の固定ページに表示させたい内容
<?php else: ?>
それ以外に表示させたい内容(入れる内容がなければ空でも可)
<?php endif; ?>

ちなみに固定ページごとのIDの調べ方は、管理画面上で固定ページ一覧を出し、一覧表示された中でIDが知りたいページのタイトルにマウスオーバーさせると、画面の左下の方にURLが出るのでそこに出る「post=○○」っていうところの数字です。(ChromeとFirefoxで確認。他のブラウザってどうなってたっけ?)

特定の固定ページが複数ある場合

「特定の固定ページ」が複数ある場合には下記のような書き方に変わります。

<?php if(is_page( array( 1, 55, 103 ) ) ): ?>
特定の固定ページに表示させたい内容
<?php else: ?>
それ以外に表示させたい内容(入れる内容がなければ空でも可)
<?php endif; ?>

特定の固定ページが複数ある場合にスラッグやタイトルで条件分岐

ちなみに、ID以外にも「スラッグ」「ページのタイトル」でもおっけーです。

先ほどの一行目を下記のように書くだけ。スラッグとタイトルは「’」で括る必要があるんですね。

<?php if(is_page( array( 12, 'contact', '記事ページのタイトル' ) ) ): ?>
特定の固定ページに表示させたい内容
<?php else: ?>
それ以外に表示させたい内容(入れる内容がなければ空でも可)
<?php endif; ?>

特定の固定ページが複数あって分岐も数パターンある場合

「固定ページAではこの表記、固定ページBではこの表記、それ以外はこの表記」という具合に数パターンに分岐させる場合もあると思います。そんなときはelseifでつないでいけばおっけーです。

<?php if(is_page( array( 1, 55, 103 ) ) ): ?>
1つ目のパターンで表示させたい内容
<?php elseif(is_page( 302 ) ): ?>
2つ目のパターンで表示させたい内容
<?php else: ?>
それ以外に表示させたい内容(入れる内容がなければ空でも可)
<?php endif; ?>

当然、IDの部分はスラッグやタイトルにしても大丈夫です。

固定ページかそれ以外のページか

今回の趣旨は「こういう固定ページではこうしたいけど、こっちの固定ページではこうしたい」という、固定ページ同士の分岐が主なんですが、一応「固定ページorそれ以外」の場合はこんな感じです。

<?php if(is_page()): ?>
特定の固定ページに表示させたい内容
<?php else: ?>
それ以外に表示させたい内容(入れる内容がなければ空でも可)
<?php endif; ?>

一番最初に紹介したものから数字を消しただけですね。最もシンプルな形です。

他のものとの組み合わせもできるので、「固定ページ or 固定ページ以外」という分岐をこの記述で行ったのちに、「固定ページAではこれを出す」ということをこれまでに紹介したパターンのいずれかの方法で分岐させるというのができそうですね。

最後に

ちなみに、今回これが必要になったのは「お問い合わせのあとに遷移するサンクスページの直前にAdWordsのコンバージョンタグを設置したい」というニーズに応えるためでした。

footer.phpが共通なのでこうする以外の方法がなくて。

その他に僕が書いてきたWordPressの条件分岐についての記事はこちらからどうぞ。