小売ECのコーポレートサイトやオウンドメディアでは、トップページ、商品カテゴリー、コラム記事、そして「問い合わせ」「資料請求」「LP(ランディングページ)」といった固定ページが同じテーマ・同じヘッダー/フッターの中に混在しています。これ自体は自然な構成ですが、問題はここから先です。すべてのページに同じCTA(Call To Action)文言、同じ計測タグを出していないでしょうか。トップページで有効なCTAが、問い合わせページでは的外れになったり、逆に問い合わせ完了後のサンクスページにコンバージョンタグを重ねて出稿してしまい、広告の成果が水増しされたりするケースは珍しくありません。
WordPressには、こうした「ページの種類ごとに出し分ける」ための条件分岐タグが標準で用意されています。その代表格がis_page()です。現在表示中のページが固定ページかどうか、さらに特定のIDやスラッグ、タイトルに一致する固定ページかどうかを判定できる関数で、テーマのテンプレートファイルやプラグイン、カスタムコードの中で頻繁に使われます。名前だけを見ると「固定ページかどうかを判定するだけの地味な関数」に見えますが、実務では、CTAの出し分け、計測タグの重複防止、LPごとの訴求切り替えなど、コンバージョン率に直結する場面で活躍します。
この記事では、is_page()の技術的な仕様を正確に押さえたうえで、小売ECサイトの問い合わせ導線を設計・改善する立場から、この関数をどう使えば成果につながるのかを、実装例・運用の落とし穴・判断軸・測定指標まで含めて網羅的に解説します。すでに公開しているsingle_term_title()やtaxonomy_exists()を扱った記事と同じ視点で、今回は「固定ページ単位の出し分け」というテーマに絞り込んでいます。
この記事で分かること
- is_page()の引数・戻り値・使い方の正確な仕様
- 固定ページ限定でCTAや計測タグを出し分けるべき理由
- ループ内で不安定になる注意点と、安全な実装パターン
- 問い合わせ導線・LPの設計にis_page()をどう落とし込むか
- 運用でよくある失敗と、その回避策・判断軸
- 出し分け施策の効果をどう測定すればよいか
is_page()が小売ECの集客で重要になる理由
小売ECのオウンドメディアやコーポレートサイトは、コラム記事による集客と、問い合わせ・資料請求・LPによるコンバージョンという、性質の異なる2つの役割を同じWordPressサイトの中に同居させています。この構造自体は効率的ですが、放置すると次のような問題が起きやすくなります。
- すべてのページで同じCTA文言を出してしまい、問い合わせページに来た「すでに検討段階にいるユーザー」に対して、コラム記事向けの弱いCTA(「資料はこちら」程度の控えめな導線)しか見せられていない
- 広告のコンバージョンタグ(Google広告のコンバージョンタグ、Meta広告のピクセルイベントなど)を全ページ共通で読み込んでしまい、問い合わせ完了ページ以外でもコンバージョンとしてカウントされ、広告の成果指標が不正確になる
- LPごとに異なる訴求(価格訴求のLP、事例訴求のLP、業種特化のLPなど)を用意しているのに、テーマ側のCTAブロックが共通で挿し込まれてしまい、LPの世界観と矛盾するCTAが混在する
- 固定ページの追加・削除のたびにテーマファイルを手動で書き換えており、ページが増えるほど保守コストが積み上がる
これらはすべて「今表示しているのがどの固定ページなのか」をコード側が正しく判定できていないことに起因します。is_page()は、この判定をテンプレートタグ1つで実現できる、いわば出し分けロジックの入り口です。ページ単位でCTAや計測タグを制御できるようになれば、集客用のコラム記事とコンバージョン用の固定ページとで、それぞれに最適化した体験を提供できるようになり、結果として問い合わせ数・資料請求数の底上げにつながります。
is_page()の役割を実務目線で理解する
is_page()は、WordPressのコンディショナルタグ(条件分岐タグ)の1つで、現在のリクエストが単一の固定ページを表示しているかどうかを判定します。引数$pageは省略可能で、省略した場合は「固定ページ全般であるかどうか」を判定します。引数にページID(整数)、ページスラッグまたはタイトル(文字列)、あるいはこれらを混在させた配列を渡すと、「その特定の固定ページであるかどうか」を判定できます。
<?php
// 固定ページ全般の判定
if ( is_page() ) {
// 何らかの固定ページを表示中
}
// IDで特定の固定ページを判定(問い合わせページがID=42の場合)
if ( is_page( 42 ) ) {
// 問い合わせページ専用のCTA・計測タグをここに出力
}
// スラッグまたはタイトルの配列で複数ページをまとめて判定
if ( is_page( array( 'contact', 'lp-spring-sale', 'lp-autumn-fair' ) ) ) {
// 問い合わせページと複数のLPをまとめて対象にする
}
?>
もう1つ、実務でよく使うのが「特定ページを除外する」パターンです。サンクスページだけコンバージョンタグを出し、それ以外の固定ページでは出さない、といった制御は次のように書けます。
<?php
// サンクスページ(ID=88)でのみコンバージョンタグを出力する
if ( is_page( 88 ) ) {
?>
<script>
// 広告プラットフォームのコンバージョンイベント発火
</script>
<?php
}
?>
注意すべき点は主に2つあります。1つ目は「ループの中で使うと動作が不安定になる」ことです。is_page()はグローバルな$wp_queryを参照して判定するため、カスタムループ(WP_Queryやget_posts()による二重ループ)の中で呼び出すと、メインクエリとは異なる結果を返したり、意図しない挙動になったりすることがあります。ループの中で判定結果を使いたい場合は、ループに入る前に変数へ結果を代入しておき、ループ内ではその変数を参照するのが安全です。2つ目は「メインクエリが確定する前(wpフックより前)に呼び出しても正しい判定にならない」点です。functions.phpの直下やプラグインの初期化処理など、早いタイミングでis_page()を呼んでしまうアンチパターンは非常によく見かけますが、これは高確率で常にfalseを返す、あるいは意図しないページでtrueを返す原因になります。CTAや計測タグの出し分けは、テンプレートファイル内(header.php、footer.php、固定ページ用テンプレート内)や、wp_head・wp_footerフックの中で行うのが基本です。
小売事業者のインバウンド集客に落とし込む考え方
問い合わせページとコラム記事でCTAの温度感を変える
コラム記事にたどり着くユーザーの多くは、まだ「比較検討」や「情報収集」の段階にいます。ここで「今すぐ問い合わせる」という強いCTAを出しても反応は薄く、むしろ「まずは資料で概要を知りたい」というニーズに合ったソフトなCTAのほうが機能します。一方、問い合わせページやLPにたどり着いたユーザーは、すでに検討がある程度進んでおり、具体的な相談を始める準備ができています。ここでは「電話番号を大きく見せる」「フォームの入力項目を絞る」「導入までの流れを明示する」といった、行動を後押しする強いCTAが有効です。
is_page()を使えば、この温度感の違いをコード側で明確に切り替えられます。たとえば固定ページのIDを配列で束ねておき、その配列に含まれるページでは強いCTAブロックを、それ以外(投稿・アーカイブ・コラム記事)ではソフトなCTAブロックを出し分ける、という設計です。CTAのHTML自体はウィジェットやテーマのカスタマイザーで管理しつつ、「どのページでどちらを出すか」の判定だけをis_page()に任せる構成にすると、デザイン変更のたびにロジックを触らずに済み、保守性も高まります。
- 問い合わせ・LP系ページ:電話番号・フォーム直リンクを強調した強いCTA
- コラム記事・アーカイブページ:資料請求やメルマガ登録などソフトなCTA
- 切り替えの判定はページID配列を1箇所にまとめて管理する
広告のコンバージョンタグを正しいページだけに出す
広告経由の問い合わせ数を正確に計測するには、コンバージョンタグ(Google広告のコンバージョントラッキング、Meta広告のピクセルイベント、各種CRMの計測タグなど)を「問い合わせ完了後のサンクスページ」だけに出す必要があります。もしテーマの共通フッターにコンバージョンタグを直接埋め込んでしまうと、サイト内のあらゆるページ表示がコンバージョンとしてカウントされてしまい、広告の費用対効果(CPA)が実態よりも大幅に良く見える、という誤った意思決定を招きます。
is_page()でサンクスページのIDを指定し、そのページのときだけタグを出力するようにすれば、この事故は構造的に防げます。特に複数の広告媒体を併用している小売ECでは、媒体ごとに計測タグが増えていきがちです。すべてのタグを1つのis_page()の条件分岐の中にまとめておくと、後から見直すときも一箇所を確認するだけで済み、タグの重複や漏れに気づきやすくなります。
- コンバージョンタグはサンクスページ限定でis_page()判定してから出力する
- 複数媒体のタグは1箇所にまとめて管理し、棚卸ししやすくする
- フォーム送信後のリダイレクト先が固定ページであることを事前に確認する
LPごとに訴求とCTAを切り替える
季節キャンペーン、業種特化ページ、価格訴求ページなど、小売ECでは複数のLPを同時運用することが珍しくありません。それぞれのLPは訴求内容が異なるため、CTAの文言やボタンの色、フォームの見せ方もLPの世界観に合わせて変えたいところです。しかし、テーマの共通CTAブロックがすべてのページに一律で挿し込まれる設計になっていると、LP独自の訴求とテーマ共通のCTAが混在し、ユーザーにちぐはぐな印象を与えてしまいます。
この場合もis_page()でLPごとのIDやスラッグを判定し、LP専用のCTA・配色・フォーム誘導文言に差し替える実装が有効です。LPの数が増えてくると、IDを1つずつif文で並べるのではなく、LPのIDとCTA文言・遷移先をペアにした連想配列(マップ)を用意し、is_page()で現在のページIDがそのマップに含まれるかどうかを判定して該当するCTAを取り出す、という設計にしておくと保守性が大きく向上します。
- LPのID・スラッグとCTA内容をマップとして一元管理する
- LP追加時はマップに1行足すだけで済む構成にしておく
- 配色やボタン文言もLPの訴求に合わせて出し分ける
会員限定ページ・非公開情報ページでの出し分け
卸売や法人向けの取引がある小売事業者では、特約店専用ページや会員限定の価格表ページなど、一般公開のコラムとは性質の異なる固定ページを持っていることがあります。こうしたページでは、一般向けのCTA(「まずは資料請求」など)ではなく、「担当営業へ連絡する」「専用フォームから問い合わせる」といった、既存関係者向けの導線を出す必要があります。
is_page()で該当ページを判定し、一般向けCTAの表示自体をスキップする、あるいは会員向け専用のCTAに差し替えることで、誤った導線を見せてしまうリスクを避けられます。あわせて、これらのページはSEOでの集客対象ではないことが多いため、is_page()の判定結果を使ってnoindexの出し分けや、パンくずリストの表示内容の切り替えと組み合わせておくと、サイト全体の情報設計に一貫性が生まれます。
- 会員限定ページでは一般向けCTAを出さない、または専用CTAに差し替える
- noindexやパンくずの出し分けもあわせて設計する
- 営業チームが使う専用フォームへの動線を明確にする
フォームの入力完了率を高めるための出し分け
問い合わせフォームがあるページでは、CTAの出し分けだけでなく、入力中の離脱を防ぐための工夫も重要です。たとえば、フォームページに限って「入力にかかる目安時間」や「対応可能な相談内容の例」をページ上部に補足表示する、といった工夫は、フォーム以外のページでは不要な情報です。is_page()でフォームページを判定し、こうした補足情報を出し分けることで、他ページのレイアウトを崩さずに、フォームページだけを最適化できます。
また、フォームページに限ってヘッダーのナビゲーションを簡略化し、離脱経路を減らす「フォーム最適化(EFO)」の考え方を採用する小売ECも増えています。この場合もヘッダーテンプレートの中でis_page()を使い、フォームページかどうかでナビゲーションの出し方自体を切り替える実装になります。
- フォームページ限定で入力の目安や相談例を補足表示する
- フォームページではナビゲーションを簡略化し離脱経路を減らす
- 他ページのレイアウトに影響を与えないよう出し分けの範囲を限定する
運用イメージ(架空パターン)
実際の運用イメージをつかむために、架空の小売事業者A社を例に考えてみます。A社は台所用品を扱うECサイトを運営しており、コーポレートサイトには「コラム記事」「問い合わせページ」「法人向け卸取引LP」「季節キャンペーンLP」の4種類のページが混在しているとします。
仮に、A社がこれまでテーマの共通フッターにCTAブロックとコンバージョンタグをまとめて埋め込んでいたとします。この状態では、コラム記事にも法人向け卸取引LPにも同じ「お問い合わせはこちら」というCTAしか出せず、法人担当者向けの「取引条件について相談する」という訴求ができていない、という課題があったと仮定します。また、コンバージョンタグがすべてのページで発火してしまうため、広告の管理画面上のコンバージョン数と、実際にフォームから届いた問い合わせ件数が一致せず、広告担当者が正確な費用対効果を把握できていない、という状態も想定できます。
ここでis_page()を使い、ページIDとCTA内容・計測タグの対応表を1つのファイルにまとめる形で実装を整理したとします。法人向け卸取引LPには「取引条件について相談する」という専用CTAを、季節キャンペーンLPにはキャンペーン内容に応じたCTAを、そしてサンクスページにのみコンバージョンタグを出す構成に変更します。こうした整理を行うことで、少なくとも構造上は「ページの意図とCTAが一致していない」「計測タグが不要なページでも発火する」という2つの課題が解消される、という設計上の効果が期待できます。もちろん、これはあくまで架空の設計例であり、実際の効果はサイトの状況やユーザー層によって異なります。
実装・運用の進め方
- まず現状の固定ページを一覧化し、それぞれのページの役割(集客/コンバージョン/会員限定など)を分類する
- ページIDとCTA内容・計測タグの対応関係を1つの設定ファイルまたは配列にまとめる
- is_page()の判定はテンプレートのwp_head・wp_footer、または専用テンプレートファイルに集約する
- ループ内では判定結果を変数にキャッシュしてから使う
- 本番反映前にステージング環境で全固定ページを目視確認する
- 固定ページ追加時のチェックリストに「出し分け設定への追記」を加えておく
よくある失敗と回避策
- ページIDをハードコーディングしすぎて、ページ削除・URL変更時に判定が壊れる → IDとスラッグの両方を記録し、変更時に見直すルールを設ける
- ループの中でis_page()を呼び、想定と違う判定結果になる → メインループの外、またはループ前に判定結果を変数化する
- コンバージョンタグの出し分け漏れで二重計測が発生する → タグの出力箇所を1ファイルに集約し、棚卸しを定例化する
- LPが増えるたびにテーマファイルを直接編集し、デグレが起きる → CTA・LP対応表をコードとは別の設定として管理する
- 会員限定ページに一般向けCTAが表示されたままになる → 固定ページ作成時のチェックリストに出し分け確認を含める
社内で持つべき判断軸
- そのページの主目的は「集客」か「コンバージョン」か、明確に分類できているか
- CTAや計測タグの出し分けロジックが、担当者以外にも把握できる形で文書化されているか
- 固定ページの新規作成・削除のフローに、出し分け設定の更新が組み込まれているか
- 広告のコンバージョン計測が、実際の問い合わせ件数と定期的に突き合わされているか
- LPやCTAの変更を、開発者を介さず更新できる範囲を決めているか
成果測定で見るべき指標
- 固定ページ別のCTAクリック率(問い合わせページ・LP別に分けて計測する)
- フォーム到達率とフォーム完了率(どの流入元・どのページ経由かで比較する)
- 広告経由のコンバージョン数と、実際に届いた問い合わせ件数の差分
- LPごとの直帰率・平均滞在時間の変化(CTA出し分け前後で比較する)
- 問い合わせ完了ページの表示回数と、実際のフォーム送信数の整合性
よくある質問
is_page()とis_singular()はどう違いますか
is_page()は固定ページ(post typeがpage)であるかどうかのみを判定します。一方is_singular()は投稿・固定ページ・カスタム投稿タイプを含む「単一の投稿系ページ全般」を判定できる、より広い条件分岐タグです。固定ページに限定した出し分けを行いたい場合はis_page()を、投稿タイプを問わず単一ページかどうかを判定したい場合はis_singular()を使い分けます。
子ページ(階層構造の下位ページ)も判定できますか
is_page()に子ページ自身のID・スラッグ・タイトルを指定すれば判定できます。親ページを指定しても子ページではtrueになりません。親子関係をまとめて判定したい場合は、対象となる子ページのIDを配列で列挙する必要があります。
プラグインが生成した固定ページでも動作しますか
投稿タイプがpageであれば、プラグインが自動生成したページ(決済プラグインのカート・購入完了ページなど)でも同様に判定できます。ただし、プラグインによっては固定ページではなく独自の投稿タイプやテンプレートを使う場合があるため、事前に投稿タイプを確認してください。
is_page()の判定はキャッシュに影響しますか
is_page()自体はページキャッシュの挙動に直接影響しませんが、出し分けたCTAや計測タグをキャッシュプラグインが静的に保存してしまうと、キャッシュクリア前は古い出し分け結果が表示され続けることがあります。出し分けロジックを変更した際は、対象ページのキャッシュを個別にパージすることを忘れないようにしてください。
WooCommerceのショップページやカートページでも使えますか
WooCommerce導入時、ショップページは通常固定ページとして扱われるためis_page()で判定可能です。ただし商品詳細ページは固定ページではなく独自の投稿タイプのため、is_page()では判定できません。商品詳細ページの出し分けにはWooCommerce側の専用コンディショナルタグ(is_product()など)を使う必要があります。
複数の条件を組み合わせて判定したい場合はどうすればよいですか
is_page()の戻り値はtrue/falseのため、他のコンディショナルタグ(is_user_logged_in()など)と論理演算子で組み合わせて条件分岐できます。たとえば「特定の固定ページかつ非ログイン状態」といった複合条件も、通常のPHPのif文の中で自然に表現できます。
EC制作・EC広告の相談先を探している小売事業者の方へ
ここまで解説した設計や実装は、単体の関数を知るだけでは十分ではありません。実際の集客成果につなげるには、商品データの持ち方、カテゴリやタグの設計、記事導線、内部リンク、コンバージョン導線、広告配信先の整合まで含めて一貫して設計する必要があります。
自社ECの制作、既存WordPressサイトの改善、Shopifyや基幹システムとの連携、広告運用と連動した特集ページ制作までまとめて整理したい場合は、事業構造に合わせた設計が重要です。運用負荷を抑えながら売上につながる情報設計を進めたい場合は、要件整理の段階から相談できる体制を持っておくと失敗を減らせます。
まとめ
is_page()は「現在表示中のページが固定ページかどうか」を判定するシンプルな関数ですが、問い合わせページやLP、サンクスページといったコンバージョンに直結する固定ページを正確に見分けられることは、小売ECのインバウンド集客において大きな意味を持ちます。CTAの温度感の出し分け、広告コンバージョンタグの正確な計測、LPごとの訴求切り替え、会員限定ページの導線制御など、実務での活用範囲は多岐にわたります。ループ内での不安定な挙動や、判定タイミングの誤りといった落とし穴を避けつつ、ページIDとCTA・計測タグの対応関係を一元管理する設計を採用すれば、固定ページが増えても保守性を保ったまま、コンバージョン導線を最適化し続けることができます。

コメント