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ではこれを出す」ということをこれまでに紹介したパターンのいずれかの方法で分岐させるというのができそうですね。
最後に
ちなみに、今回これが必要になったのは「お問い合わせのあとに遷移するサンクスページの