2026.09.25 公開 2026.10.06 更新

WordPressのCSS・JS読み込み|基本編

WordPressのCSS・JS読み込み|基本編

この記事でわかること

  • テーマのCSS・JSを、WordPressの推奨する方法で読み込める
  • CSSを更新したとき、古いキャッシュに邪魔されずにすぐ反映させられる

WordPressでは、CSSやJSはfunctions.phpから読み込むのが推奨の方法です。この記事では、CSSとJSを1つずつ読み込む、基本の書き方を紹介します。

ハコマル

ハコマル

最初は基本の書き方だけ覚えれば大丈夫だよ!慣れてきたら少しずつ応用していこうね

CSS・JSの読み込みで押さえること

やりたいことが決まっている場合は、次の表から使う関数と、解説しているSTEPを探してください。

やりたいこと 使う関数・機能 解説
CSSを読み込む wp_enqueue_style STEP1
テーマのファイルを指定する get_theme_file_uriなど STEP1
キャッシュ対策をする filemtime STEP2
JSを後で読み込む wp_enqueue_script STEP3

各STEPのコードは、前のSTEPのコードに書き足していきます。コピーして使いたい場合は、完成形のコードを先に確認できます。

ハコマル

ハコマル

STEPを順番に読んでいくと、最後に完成形のコードが組み上がるよ!

STEP1:CSSを読み込む

wp_enqueue_scriptsフックの中でCSSを読み込む

CSSはwp_enqueue_style、JSはwp_enqueue_scriptで読み込みます。どちらも、wp_enqueue_scriptsというフックの中で呼び出すのが決まりです。フックの外で呼ぶと、予期しない動きになることがあります。

function mytheme_enqueue_assets() {              /* ① */
  wp_enqueue_style(
    'mytheme-style',                             /* ② */
    get_parent_theme_file_uri('css/style.css'),  /* ③ */
    [],                                          /* ④ */
    '1.0.0'                                      /* ⑤ */
  );
}
add_action('wp_enqueue_scripts', 'mytheme_enqueue_assets'); /* ⑥ */
コード解説
① 読み込み処理をまとめる関数を作る(名前は自分で決める)
② 読み込むCSSを識別するためのハンドル名※1(自分で決める)
③ 読み込むCSSファイルのURL
④ 先に読み込んでおきたいCSSのハンドル名を書く場所(この記事では使わないので、空の配列にする)
⑤ バージョン(URLの末尾に付く。STEP2で解説する)
⑥ 作った関数を、CSS・JSを読み込むためのフックに登録する(フック名はWordPressが決めた名前をそのまま使う)

※1:ハンドル名…読み込むCSS・JSを識別するための名前。この記事では「mytheme-style」のように、接頭辞とファイル名を組み合わせて付けています。

同じハンドル名なら二重に読み込まれない

1つ目の引数のハンドル名が同じなら、何度呼び出しても読み込まれるのは1回だけです。ハンドル名を「テーマの接頭辞-ファイル名」に統一しておくと、二重読み込みを防げます。

ただし、同じハンドル名で別のパラメータを渡しても、2回目以降の値は無視されます。別のCSSには、必ず別のハンドル名を付けましょう。

テーマ内のファイルのパスとURLを取得する

テーマ内のファイルを扱うときは、次の関数を使います。名前が_pathで終わる関数はサーバー上の場所を返します。_uriで終わる関数は、ブラウザが読み込むURLを返します。

関数 取得するもの 子テーマを使っているとき
get_parent_theme_file_path サーバー上のパス 常に親テーマのファイルを参照する
get_parent_theme_file_uri URL 常に親テーマのファイルを参照する
get_theme_file_path サーバー上のパス 子テーマに同名のファイルがあれば、子テーマを優先する
get_theme_file_uri URL 子テーマに同名のファイルがあれば、子テーマを優先する

URLは読み込み関数に渡します。パスは、STEP2で使うfile_existsやfilemtimeに渡します。子テーマで上書きさせたい場合は、get_theme_file_で始まる関数を使いましょう。

ハコマル

ハコマル

「path」はサーバーの中の住所、「uri」はブラウザから見た住所、と覚えるといいよ!

これらの関数は、WordPress 4.7で追加されたとされています。古いバージョンのWordPressで使う場合は、公式リファレンスで確認してください。

STEP2:キャッシュ対策をする

バージョンを付けてキャッシュ対策をする

CSSを更新したのに、ブラウザに古いキャッシュが残って反映されないことがあります。これを防ぐのが、4つ目の引数に指定するバージョンです。バージョンは、URLの末尾に?ver=値として付きます。

出力されるHTML(例)

<link
  rel="stylesheet"
  href="https://example.com/css/style.css?ver=1.0.0"
>

値が変わるとURLも変わるため、ブラウザは新しいファイルを読み込みます。バージョンには、次の値を指定できます。

指定する値 URLに付くもの 向いている場面
'1.0.0'などの文字列 指定した値 更新のたびに、番号を手動で変える場合
false WordPress本体のバージョン番号 テーマのCSSには不向き(CSSを更新してもURLが変わらない)
null 何も付かない Google Fontsなどの外部CSS
filemtimeの結果 ファイルの更新日時 テーマ内のCSS・JS(おすすめ)

更新日時を自動でバージョンにする

filemtimeは、ファイルの更新日時を取得する関数です。バージョンに使えば、CSSを更新するたびに自動でURLが変わります。STEP1の関数の中身を、次のように書き換えます。

function mytheme_enqueue_assets() {
  $path = get_parent_theme_file_path('css/style.css');  /* ① */

  if (file_exists($path)) {                             /* ② */
    wp_enqueue_style(
      'mytheme-style',
      get_parent_theme_file_uri('css/style.css'),
      [],
      filemtime($path)                                  /* ③ */
    );
  }
}
add_action('wp_enqueue_scripts', 'mytheme_enqueue_assets');
コード解説
① CSSファイルのサーバー上のパスを取得する(変数名は自分で決める)
② ファイルが存在するときだけ読み込む(ファイルがないと、更新日時の取得で警告が出るため)
③ ファイルの更新日時をバージョンにする
ハコマル

ハコマル

テーマのCSSやJSは、filemtimeでバージョンを付けると覚えておいてね!キャッシュで悩まなくなるよ

STEP3:JSを読み込む

JSはwp_enqueue_scriptで読み込みます。5つ目の引数に配列を渡すと、出力する場所や実行するタイミングを指定できます。この配列の書き方は、WordPress 6.3以降で使えます。

次のコードを、mytheme_enqueue_assets関数の中の、CSSを読み込む処理の下に書き足します。

$main_js = get_parent_theme_file_path('js/main.js');

if (file_exists($main_js)) {
  wp_enqueue_script(
    'mytheme-main',                                   /* ① */
    get_parent_theme_file_uri('js/main.js'),
    [],
    filemtime($main_js),
    ['in_footer' => true]                             /* ② */
  );
}
コード解説
① 読み込むJSを識別するためのハンドル名(自分で決める)
② JSをフッターに出力する
ハコマル

ハコマル

CSSと形はほとんど同じだよ!違うのは、関数の名前と5つ目の引数だけだね

実行するタイミングの指定は、よくある質問で紹介しています。詳しい仕様はWordPress公式リファレンス(wp_enqueue_script)で確認できます。

完成形のコード

STEP1〜3のコードを、1つにまとめました。functions.phpに貼り付けて使えます。

function mytheme_enqueue_assets() {                     /* ① */
  $path = get_parent_theme_file_path('css/style.css');
  if (file_exists($path)) {                             /* ② */
    wp_enqueue_style(
      'mytheme-style',
      get_parent_theme_file_uri('css/style.css'),
      [],
      filemtime($path)
    );
  }

  $main_js = get_parent_theme_file_path('js/main.js');
  if (file_exists($main_js)) {                          /* ③ */
    wp_enqueue_script(
      'mytheme-main',
      get_parent_theme_file_uri('js/main.js'),
      [],
      filemtime($main_js),
      ['in_footer' => true]
    );
  }
}
add_action('wp_enqueue_scripts', 'mytheme_enqueue_assets');
コード解説
① 読み込み処理をまとめる関数。最後にフックへ登録する(STEP1)
② CSSを、更新日時をバージョンにして読み込む(STEP2)
③ JSをフッターで読み込む(STEP3)

使うときは、接頭辞(mytheme)と、CSS・JSのファイルの場所を、自分のサイトに合わせて書き換えてください。

さいごに

まとめ

functions.phpでのCSS・JSの読み込みは、フックに登録した関数の中に書くのが基本です。

まず押さえる3つのポイント

  • wp_enqueue_scriptsフックの中で読み込む
  • ハンドル名は「テーマの接頭辞-ファイル名」に統一する
  • テーマ内のファイルはfilemtimeでバージョンを付ける

CSSやJSが増えてきたら、ページごとの出し分けにも挑戦してみてください。

よくある質問

CSSを更新したのに反映されません

バージョンが変わっていない可能性があります。テーマ内のファイルは、filemtimeで更新日時をバージョンにしましょう。更新するたびにURLが変わり、新しいファイルが読み込まれます。

書き方は「更新日時を自動でバージョンにする」で解説しています。

同じCSSを2回読み込むコードを書いても大丈夫?

大丈夫です。ハンドル名が同じなら、何度呼び出しても読み込まれるのは1回だけです。

仕組みは「同じハンドル名なら二重に読み込まれない」で解説しています。

get_parent_theme_file_uriとget_theme_file_uriはどちらを使えばいい?

子テーマで上書きさせたいならget_theme_file_uriを選びます。常に親テーマのファイルを使いたいなら、get_parent_theme_file_uriを選びます。

違いは「テーマ内のファイルのパスとURLを取得する」で解説しています。

JSを実行するタイミングも指定できますか?

指定できます。5つ目の引数の配列に'strategy'を追加し、['in_footer' => true, 'strategy' => 'defer']のように書きます。

deferは、HTMLの解析を止めずに読み込み、DOMの構築後に実行します。複数ある場合は追加した順に実行されるため、ページ内の要素を操作するJSや、実行順が大事な複数のJSに向いています。

asyncは、読み込みが終わり次第すぐ実行します。実行順は保証されないため、他のJSに頼らず単独で動くJSに向いています。

以前は、5つ目の引数にtrue/falseを渡す書き方が使われていました。trueでフッターに出力され、現在も動作します。

配列の書き方は「JSをフッターで読み込む」で解説しています。

参考にした公式情報

WordPress公式 開発者向けドキュメント

CSS・JSを読み込む関数の引数や、テーマ内のファイルを取得する関数の仕様を確認できます。

公式ページを開く

どのページも英語ですが、ブラウザの翻訳機能を使えば日本語で読めます。