固定ページのスラッグで分ける!WordPress条件分岐の基本と実践テクニック

はじめに:なぜスラッグで条件分岐するのか?

WordPressでサイト制作をしていると、「特定の固定ページだけにCSSやJSを読み込ませたい」
「あるページだけ別のヘッダーを表示させたい」といった場面に遭遇することが多々あります。

そんなときに便利なのが、固定ページの「スラッグ(slug)」を使った条件分岐です。

この記事では、WordPressのスラッグ条件分岐の基本から実践的な活用方法まで、初心者にもわかりやすく解説します。

固定ページの「スラッグ」とは?

まずはスラッグについておさらいしましょう。

スラッグとは、固定ページや投稿のURLの一部として使われる「英数字の識別子」です。

たとえば、次のようなURLを見てみましょう。

https://example.com/about

この「about」の部分がスラッグです。
WordPressの管理画面で固定ページを作成・編集する際に設定できます。

条件分岐に使える関数:is_page()

スラッグによる条件分岐を行うためには、WordPressのテンプレートタグ is_page() を使います。

書き方の基本

if ( is_page( 'about' ) ) {
// 「about」というスラッグの固定ページのとき
echo 'これは会社概要ページです。';
}

このように、スラッグを引数にして is_page() を使うと、指定した固定ページにいるかどうかを判別できます。

実践例①:特定のページでだけCSSを読み込む

「会社概要(about)」ページでだけ特別なCSSを使いたい場合、次のように記述できます。

<?php if ( is_page( 'about' ) ) : ?>
<link rel="stylesheet" href="<?php echo get_template_directory_uri(); ?>/css/about.css">
<?php endif; ?>

header.php にこの記述を追加すれば、特定のページだけにスタイルを適用できます。

実践例②:ページごとにテンプレートを切り替える

特定のページでだけ別のテンプレートパーツ(ヘッダー・フッターなど)を使いたい場合にも、条件分岐は便利です。

<?php if ( is_page( 'contact' ) ) : ?>
<?php get_template_part( 'header', 'contact' ); ?>
<?php else : ?>
<?php get_template_part( 'header', 'default' ); ?>
<?php endif; ?>

このように get_template_part() と組み合わせることで、ページに応じた柔軟なデザインを実現できます。

実践例③:複数のページで同じ処理をしたい

複数のスラッグに対して共通の処理を適用したいときは、配列で指定できます。

<?php
if ( is_page( ['about', 'services', 'faq'] ) ) {
echo 'この3ページに共通する要素';
}
?>

管理のしやすさも考えて、共通パーツをまとめたいときに便利です。

実践例④:日本語タイトルやIDでも指定できる

is_page() の引数には、スラッグの他にページIDやタイトルも使えます。

// IDで指定
if ( is_page(42) ) {
echo 'IDが42のページ';
}

// タイトル(日本語)で指定
if ( is_page('お問い合わせ') ) {
echo 'お問い合わせページ';
}

ただし、タイトルで指定する場合は、タイトルを変更すると条件が崩れるため、
スラッグまたはIDでの指定が安全です。

応用:カスタムフィールドと組み合わせてさらに柔軟に

Advanced Custom Fields(ACF)などのプラグインを使って、
ページごとにカスタムフィールドで設定した値を条件分岐に活用することもできます。

<?php
if ( is_page( 'service' ) && get_field('show_banner') === 'yes' ) {
echo '<div class="banner">特別なバナーを表示</div>';
}
?>

スラッグだけでは対応できない柔軟なレイアウト制御も可能になります。

条件分岐を書く場所の注意点

  • 条件分岐は header.phpfunctions.php など、テンプレートファイル内で使います。
  • functions.php 内で分岐する場合は、グローバル変数 $post を意識する必要があります。
global $post;
if ( isset($post) && $post->post_name === 'about' ) {
// 固定ページ「about」のとき
}

トラブル回避のポイント

  • スラッグのスペルミスに注意(特に複数ページ条件時)
  • キャッシュの影響で条件が反映されないことも → 一度キャッシュクリア
  • フロントページを固定ページに設定している場合is_front_page() との違いに注意

まとめ:スラッグ条件分岐は自由度の高い設計の鍵

スラッグによる条件分岐を使いこなせば、WordPressサイトの柔軟性が格段にアップします。

おさらいポイント

シーン使用例
特定ページにCSSを読み込みたいif ( is_page('about') )
複数ページで共通処理をしたいis_page(['about', 'contact'])
ページごとにテンプレートを切り替えるget_template_part() と併用
ACFなどと組み合わせたいget_field() と組み合わせる