functions.phpに条件分岐を書くときの注意点【初心者向け】

WordPressのfunctions.phpに条件分岐を書くときの注意点を示す図解。is_single()やwp_enqueue_scriptsの使い方を解説。
functions.phpで条件分岐を書くときは、is_single()やis_page()などのタグを正しいタイミング(フック内)で使うことが重要です。

WordPressでは、functions.phpに条件分岐タグを使って処理を分けたい場面が多くあります。
しかし、記述する場所やタイミングを間違えると動作しない・エラーが出ることも少なくありません。
この記事では、functions.phpに条件分岐を書く際の基本的な考え方と注意点を、初心者にもわかりやすく解説します。

✅ この記事でわかること

  • 条件分岐タグとは何か
  • functions.phpに書くときの注意点
  • 使うタイミング(フック)の重要性
  • よくあるミスと正しい書き方

1. 条件分岐タグとは?

条件分岐タグとは、WordPressが今どのページを表示しているのかを判断するための関数です。
たとえば以下のようなものがあります。

タグ名意味
is_home()ブログ投稿一覧ページかどうか
is_front_page()サイトのトップページかどうか
is_single()投稿ページ(single.php)かどうか
is_page()固定ページかどうか
is_category()カテゴリーアーカイブかどうか

条件分岐タグの一覧については、
👉 WordPress条件分岐タグの基本まとめ【初心者向け】
で詳しく解説しています。

2. functions.phpに条件分岐を書くときの基本ルール

functions.php は、テーマが読み込まれた時点で最初に実行されるファイルです。
つまり、「WordPressの画面情報(どのページか)」がまだ判定できていない段階で実行されることが多いのです。

❌ よくある失敗例

// NG例:functions.php直下で条件分岐
if ( is_single() ) {
    // 投稿ページだけで実行したい処理
    add_action( 'wp_enqueue_scripts', 'my_single_style' );
}

このように書いても、is_single()が常にfalseになり、意図通り動作しません。

3. 正しいタイミングで条件分岐を使う

条件分岐を使う場合は、「WordPressが現在のページ情報を取得した後」に実行する必要があります。
そのためには、適切なフック(アクションフック)を使います。

✅ 正しい書き方の例

function my_enqueue_styles() {
    if ( is_single() ) {
        wp_enqueue_style( 'single-style', get_template_directory_uri() . '/css/single.css' );
    } elseif ( is_page() ) {
        wp_enqueue_style( 'page-style', get_template_directory_uri() . '/css/page.css' );
    }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_styles' );

このように、wp_enqueue_scripts など「フロント画面で実行されるフック」に紐づけるのがポイントです。

4. フックを使う代表的なパターン

目的適切なフック説明
CSSやJSを読み込むwp_enqueue_scripts表示中ページに応じたスタイル切替など
管理画面で処理するadmin_init管理画面限定で条件分岐
投稿や固定ページを操作template_redirect表示テンプレートが決まった段階で条件判断

template_redirect フックは「どのテンプレートを使うか決まったあと」に実行されるため、
複雑な条件分岐にも対応できます。

5. 条件分岐をまとめて管理するコツ

条件分岐が増えると、functions.phpがごちゃごちゃしがちです。
その場合は、専用ファイルに分けて読み込むと管理が楽になります。

// functions.php
require get_template_directory() . '/inc/conditional-functions.php';

そして、conditional-functions.php 内に条件分岐ごとの処理をまとめて記述します。

6. 条件分岐の使い方で混乱しやすいポイント

混同しやすいタグ違いの解説
is_home() vs is_front_page()is_front_page()とis_home()の違い
is_single() vs is_page()is_single()とis_page()の違いをやさしく解説
is_singular() vs is_single()is_singular()の使い方とis_single()との違い

7. よくあるエラーと対処法

🔸 エラー:Call to undefined function is_single()

→ 原因:is_single()をWordPressが完全にロードされる前に呼び出している。

対処法initwptemplate_redirectなどのアクションフック内で呼び出す。

8. まとめ

ポイント内容
条件分岐タグは「どのページか」を判定するための関数is_single()is_page() などを使って、現在表示中のページの種類を判断できます。
functions.php直下で実行すると早すぎて判定できないfunctions.php はテーマ読み込み時に最初に動くため、ページ情報がまだ確定しておらず、条件分岐が正しく動作しません。
適切なフック(wp_enqueue_scriptsなど)内で使用する条件分岐は「ページ情報が確定した後」に実行する必要があるため、アクションフックの中で使うのが正しい方法です。
混同しやすいタグの違いを理解するis_home()is_front_page() など、似たタグの違いを理解することで、意図しない条件分岐を防げます。
条件分岐が多い場合はファイル分割で管理するfunctions.php が複雑になる場合は、条件分岐専用のファイルを作成し、require で読み込むと管理しやすくなります。

🔗 関連記事