【WordPress】URLのパラメータで分岐させ表示内容を変更する方法

本ブログはアフィリエイト広告を利用しています

ブログ・サイト
ブログ・サイト
この記事は約4分で読めます。

とっちゃん@nyanco! です。

今回はWordPress(php)にて、URLアドレスのパラメータで分岐させ、ページ内容を変更する方法のご紹介です。

スポンサーリンク

そもそもパラメータとは

URLのパラメータというのは下記の「?(半角のクエスチョンマーク)」を含めた文字列のことです。

https://blog.nyanco.me/?test

上記でいうと「?test」がパラメータに該当します。

基本的にhttps://blog.nyanco.me/だろうがhttps://blog.nyanco.me/?testだろうが、実際にアクセスしてもらえば分かりますが表示内容は何も変わりません。

これをphpファイルに設定することで、任意のパラメータありのURLでアクセスした場合は異なる表示にするという条件分岐ができます。

以下のように複数のパラメータでの分岐も可能です。

https://blog.nyanco.me/?test1
https://blog.nyanco.me/?test2
https://blog.nyanco.me/
 (パラメータなし)

ちなみに「?」がないとパラメータではなくディレクトリ扱いになるので別物になりますが、URLにその文字列が含まれてるか否かの分岐は下記コードで可能です。

サンプルコード

「?」以降の文字列は任意のものに変更可能です。

サンプル1「2択の場合」

<?php $url = $_SERVER['REQUEST_URI']; ?>
<?php if(strstr($url,'?test')): ?>
  パラメータが ?test の場合の表示内容
<?php else: ?>
  上記以外の内容(パラメータなしも含む))
<?php endif; ?>

サンプル2「複数分岐の場合」

<?php $url = $_SERVER['REQUEST_URI']; ?>
<?php if(strstr($url,'?test1')): ?>
  パラメータが ?test1 の場合の表示内容
<?php elseif(strstr($url,'test2')): ?>
  パラメータが ?test2 の場合の表示内容
<?php elseif(strstr($url,'test3')): ?>
  パラメータが ?test3 の場合の表示内容
<?php else: ?>
  上記以外の内容(パラメータなしも含む))
<?php endif; ?>

簡単な解説

・【1行目】<?php $url = $_SERVER['REQUEST_URI']; ?>

$_SERVER[“REQUEST_URI”] 現在アクセスしているページのURI(ドメイン以下)を取得するサーバー変数

意味:ユーザーが現在アクセスしているURIを取得し $url という変数に格納する

・【2行目】<?php if(strstr($url,'?test')): ?>

strstr(検索対象,検索する文字列) 「検索する文字列」を「検索対象」内に検索する関数

意味:$url という変数内に ?test という文字列があるかを検索し、見つかれば【3行目】の処理をし、見つからなければ【4行目】の条件判定に。

‘?test’‘?’ とすると、どんなパラメータでアクセスしても表示されるようになります。

どんな時に使えるか

どれも結構ニッチかも知れませんが、知っておくと結構役に立ちます。

簡易キャンペーン案内

パラメータを仕込んだURLで作成したQRコードからページにアクセスした人にだけ、異なるキャンペーン内容を見せる。

※QRコードは株式会社デンソーウェーブの登録商標です。

【開発者向け】簡易テスト表示

実際に稼働しているページでやるのはあまりオススメしませんが、手入力ではあり得ない文字列のパラメータでだけ表示させる条件分岐で内容の表示チェックをしたりしています。

【応用編】1ページでカテゴリーの絞り込み表示

この分岐技術を応用すると、1ページでカテゴリーの絞り込み表示ができます。
絞り込みのaタグに href=”?test1″ のように任意のパラメータにしてやることで表示を切り替えることができます。

おわりに

条件分岐、知っていると可能性が拡がりますね~。

PHPに関してはまだまだ知識不足なので、間違えなどがありましたらご指摘いただけますと幸いです。

本記事がどなたかの参考になれば幸いです。

今回は以上となります。
最後まで読んでいただきましてありがとうございました!
それではまた〜✧٩(ˊωˋ*)و✧

コメント