2025.6.12|WordPress

WordPress(ワードプレス)でURLの文字列を使って各ページの表示要素を条件分岐する実装方法

WordPress(ワードプレス)でURLの文字列を使って各ページの表示要素を条件分岐する実装方法

WordPress(ワードプレス)は、柔軟性に優れたCMS(コンテンツ管理システム)であり、標準機能として「カテゴリ」「投稿タイプ」「固定ページ」など、ページの属性に応じた条件分岐を行うことが可能です。これにより、同じテーマファイルを使いながらも、ページの種類や目的に合わせてレイアウトやコンテンツ内容を切り替えることができ、より洗練されたユーザー体験を提供することができます。
WordPress(ワードプレス)では、標準機能としてカテゴリや投稿タイプ、固定ページなどに応じた条件分岐が可能です。これにより、ページの種類ごとに異なるデザインやコンテンツを表示することができます。

通常は「is_page() 」や「is_single() 」などの条件タグを使って分岐しますが、URLの文字列に応じて処理を分けたい場面もあります。たとえば、「URLに /shop/ が含まれているときだけ特定の情報を表示する」といったケースです。

URLの一部を判定することで、より柔軟な表示制御が可能になります。
今回は、WordPress(ワードプレス)でURLの文字列を使って各ページの表示要素を条件分岐する実装方法をご紹介いたします。

URLで条件分岐が必要になる場面とは

WordPress(ワードプレス)では、通常 is_page() や is_single()、is_category() などの条件タグを使ってページの種類ごとに処理を分岐させることができます。しかし、これらの関数ではカバーできない柔軟な条件で表示内容を切り替えたい場合もあります。

たとえば以下のようなケースでは、URLに含まれる特定の文字列をもとに処理を分岐させる「文字列ベースの条件分岐」が有効です。

【条件分岐が必要になる場面】
・複数ページをまとめて制御したい場合
・カスタム投稿タイプやタクソノミーが複雑な場合
・動的なURL構造に対応したい場合

複数ページをまとめて制御したい場合

WordPressで多くの固定ページやカスタム投稿を運用していると、「特定のカテゴリに属するページすべてに共通のバナーを表示したい」や「URLに特定のディレクトリが含まれているページだけに別レイアウトを適用したい」といったニーズが出てきます。

・「/shop/」を含むすべてのURLで特定のバナーを表示したい
・「/event」で始まるURLのページではヘッダー画像を変更したい

このような場合、投稿IDやスラッグではなく、URLパスに含まれるキーワードで処理を分岐させるのが効率的です。
この手法を使うことで、「季節限定の特集」「一部のキャンペーンページ」「特定ジャンルのコンテンツ」などを柔軟に制御でき、運用効率の大幅な向上が見込めます。

カスタム投稿タイプやタクソノミーが複雑な場合

WordPressでは、カスタム投稿タイプやタクソノミーを使って柔軟なコンテンツ構造を構築することが可能ですが、それに伴い条件分岐のロジックも複雑化する傾向にあります。

たとえば「イベント投稿」と「ニュース投稿」があり、それぞれに地域やジャンルのタクソノミーが存在しているようなケースでは、通常の条件タグだけでの制御は冗長になりがちです。
このようなとき、URLに含まれるスラッグやディレクトリ名で条件分岐することで、複雑な構造でもスマートに処理を振り分けることができます。
さらに、「特定の投稿タイプが存在するURL階層」や「分類が含まれるURLパターン」など、構造的な規則性を見つけて処理をまとめることも可能になります。これにより、テーマファイルの管理や今後の拡張性も高まります。

動的なURL構造に対応したい場合

最近のWebサイトでは、予約システムや商品検索・絞り込みなど、ユーザー操作によってURLが動的に変化する構造が増えています。
たとえば以下のようなURLです。

・/shop/?category=books&sort=price_asc
・/events/?region=kanto&type=workshop

このような動的なクエリパラメータを持つページでは、従来の「is_page()」や「is_archive()」などの条件分岐だけでは正しく処理を制御できないことがあります。
このようなケースでは、「$_SERVER[‘REQUEST_URI’] 」や「$_GET」を活用してURL文字列やクエリ情報を取得し、表示する要素やレイアウトを柔軟に切り替えるのが効果的です。
たとえば、「検索条件に応じて表示するバナーを変える」「特定のソート順で訪れた際だけおすすめ情報を表示する」といった、ユーザーの行動に応じたダイナミックなUIを実現することが可能です。

WordPress(ワードプレス)でURLによる条件分岐とは

WordPress(ワードプレス)には、ページの種類や投稿タイプに応じて処理を分けるための「条件分岐タグ」が用意されています。たとえば、トップページでは is_front_page()、投稿記事では is_single()、固定ページでは is_page() といったように、ページの属性ごとに処理を分岐することができます。

しかし、実際のWeb制作や運用においては、「URLの文字列をもとに処理を分けたい」といったニーズも多くあります。これが、URLによる条件分岐です。

たとえば以下のようなケースが該当します。

・URLに「/shop/」という文字列が含まれているページだけに特定のCSSを読み込む
・「/campaign/」を含むURLの場合だけ、キャンペーン情報を表示する
・特定のクエリパラメータがURLに含まれている場合にコンテンツを変える

このような状況では、WordPressの標準的な条件分岐タグだけでは対応が難しくなります。そこで、$_SERVER[‘REQUEST_URI’] や strpos() 関数などを使用し、URLの一部を取得・判定して表示や動作を切り替えるといった実装が求められます。
URLによる条件分岐は、カスタム投稿タイプや多言語対応、キャンペーン用のページ、絞り込み検索など、柔軟なサイト設計を行いたいときに特に有効です。使いこなすことで、ユーザーの訪問経路や閲覧ページに応じた動的なページ表現を実現することができます。

通常の条件分岐との違い

WordPress(ワードプレス)には、ページの種類や状態に応じて処理を切り替えるための「条件分岐タグ」が数多く用意されています。たとえば、投稿ページなら is_single()、固定ページなら is_page()、カテゴリページなら is_category() といった具合に、公式に用意された関数を使って簡単に判定できます。
これらの通常の条件分岐は、WordPressが内部で管理している「ページの種類」や「投稿タイプ」「タクソノミー(分類)」などの情報に基づいており、テンプレート階層やループの中で使われるケースが中心です。比較的わかりやすく、初心者でも扱いやすいのが特徴です。

一方、URLの文字列による条件分岐は、URLに含まれる任意の文字列(スラッグやパラメータなど)を使って処理を分ける手法です。これは、WordPressが自動で判別してくれる情報ではなく、$_SERVER[‘REQUEST_URI’] を用いてURLを自力で取得し、PHPの文字列関数などで条件を判定する必要があります。

たとえば、「URLに /shop/ が含まれているときだけ特定のCSSを読み込む」や「クエリ文字列に特定の値が含まれているときにだけ要素を表示する」といった柔軟な処理を実現できます。
このように、通常の条件分岐はWordPressの構造に基づいた分岐であるのに対し、URLによる分岐はカスタマイズ性が高く、より自由な条件設定が可能です。ただしその分、正確な文字列判定や記述ミスへの注意が必要となるため、やや上級者向けのテクニックといえるでしょう。

URLの文字列によって条件分岐の実装方法

WordPress(ワードプレス)でURLの文字列を使って各ページの表示要素を条件分岐して分けたい場合は、WordPress関数を利用して条件分岐を実装します。実装するには、URLに含まれる文字列を取得して条件分岐を行う必要があります。
この場合、「$_SERVER[‘REQUEST_URI’] 」の関数を使って条件分岐を行うコードを記述します。

例えば、固定ページのタイトルを自動で条件分岐を行って各ページ毎に異なるタイトルを表示させたい場合は、テンプレートファイルの「page.php」ファイルにURLに含まれている文字列毎に「$_SERVER[‘REQUEST_URI’] 」の関数を記述することで実装ができます。
※この手法は、特定のパターンを含むURL(たとえば「/shop/」や「/campaign/」など)に対して、専用のデザインを表示したいときや特定の処理を適用したいときに役立ちます。

URLに含まれている文字列毎に条件分岐するコード
<?php $url = $_SERVER['REQUEST_URI']; ?>

<?php if (strstr($url, 'about') !== false): ?>
ABOUT
<?php elseif (strstr($url, 'plan') !== false): ?>
PRICE
<?php elseif (strstr($url, 'contact') !== false): ?>
CONTACT
<?php elseif (strstr($url, 'contact/confirm') !== false): ?>
CONTACT
<?php elseif (strstr($url, 'contact/thanks') !== false): ?>
CONTACT
<?php elseif (strstr($url, 'policy') !== false): ?>
POLICY
<?php elseif (strstr($url, 'sitemap') !== false): ?>
SITEMAP
<?php else: ?>
※URLの文字列が上記以外の表示
<?php endif; ?>

まとめ

WordPress(ワードプレス)でURLの文字列を使って各ページの表示要素を条件分岐する実装方法は、標準の条件タグ(is_page() や is_single() など)では対応しきれないような細かい制御を行いたい場面において非常に役立ちます。通常はテンプレートの種類や投稿タイプに応じた条件分岐を行いますが、「URLに特定の文字列が含まれている場合のみ表示を切り替えたい」といったケースでは、今回ご紹介したようなURLの部分一致による分岐が有効な手段となります。
URLベースの条件分岐は、ちょっとした告知バナーの出し分けや、ページ単位でのCSS/JSの切り替えなどに活用できるため、手間を抑えつつピンポイントに調整したいときに非常に有効です。