WordPressにjavascriptを登録したい時に使用する関数です。
似た関数にwp_enqueue_script()
があり、何が違うのか?どこで使うのか?を分かりやすくまとめました。
単純にjavascriptだけを出力したいならwp_enqueue_script()
を使えば良いのですが、理解せずに使うのと、理解して適材適所に使うのとでは今後の保守性やカスタマイズのやり易さに違いが出てきますので、勉強熱心な方はこちらも覚えておくと良いでしょう。
まとめ記事紹介
javascriptだけでなくcssも追加したい。追加だけでなく削除もしたい。保守性、メンテナンスを考えて適切な処理を行いたい。とお考えの方は、こちらのまとめ記事も併せてご覧ください。

wp_register_script()
wp_register_script() 初期値
wp_register_script(
string $handle,
string|false $src,
string[] $deps = array(),
string|bool|null $ver = false,
bool $in_footer = false
): bool
wp_register_script() の簡潔コード
wp_register_script($handle, $src, $deps, $ver, $in_footer);
$handle
string 必須-
スクリプトの名前。判別するのに使うため一意である必要があります。
$src
string|false 必須-
スクリプトへの絶対URL。
$src
がfalse
に設定されている場合、依存する他のスクリプトのエイリアスになります。 $deps
string[]-
依存するスクリプトのハンドル名を指定(既に登録されている
$handle
を指定)指定したスクリプトの後に、このスクリプトが読み込まれる。
デフォルト:
array()
$ver
string|bool|null-
スクリプトのバージョン番号を指定する文字列 (存在する場合)
キャッシュ無効化の目的でクエリ文字列として URL に追加されます。
$ver
がfalse
に設定されている場合、現在インストールされているWordPressのバージョンと同じバージョン番号が自動的に追加されます。null
に設定すると何も追加されません。デフォルト:
false
$in_footer
bool-
スクリプトを
<head>
内ではなく</body>
直前に挿入するかどうかの判定。サイトの軽量化を考えて読み込みは最後にしたい方は
true
を指定すると良いでしょう。デフォルト:
false
スクリプトが登録されているか判定。
成功した場合は true
失敗した場合は false
wp_enqueue_script()との違い
簡単に説明すると
- wp_register_script()
-
事前予約。使いたいスクリプトをコアに登録する関数で、これだけではキューに登録されません。
- wp_enqueue_script()
-
wp_register_script()
で登録したスクリプトをキューに追加する関数です。登録されていないハンドル名を指定した場合は新規にキューへと追加します。
これだけではwp_register_script()
って使う必要あるの?全てwp_enqueue_script()
で直接使いたい所でキューにjavascriptを新規追加していけば良いじゃん。と思われるかもしれません。
functions.php
でちょっとしたjavascriptを追加したりするだけならばwp_enqueue_script()
で事足りますが、依存関係が深くなりがちなプラグインやテーマを開発したり、保守性を高めたり、コードの可読性を上げたいと考えた場合はwp_register_script()
を使った方が良いのです。
WordPressではフロントエンドに出力する前に、バックエンドで一度出力するスクリプト群を溜める保管場所をqueue(キュー)
と呼び、キューに登録する作業をenqueue(エンキュー)
と呼びます。エンキューの工程が終了後、適切な順序に並び替えてフロントエンドにスクリプトが出力されます。
依存関係の簡略化
あるスクリプトを読み込む前に必ず読み込んでおかなければならないスクリプトをwp_register_script()
の$deps
に登録しておけばwp_enqueue_script()
でキューに追加する際、自動的に必要なスクリプトも全て追加されます。
これにより、スクリプトに必要な依存関係が適切に処理されているか等の確認作業がなくなり、保守性の高いコードを書くことが出来ます。
jQuery後に子テーマのスクリプトをコアに登録する例
add_action('wp_enqueue_scripts', function () {
// 必須のスクリプトを登録
wp_register_script(
'jquery-min',
'https://code.jquery.com/jquery-3.7.0.min.js',
[],
null
);
// 登録したいスクリプト 依存関係にjquery-minを指定
wp_register_script(
'custom-script',
get_stylesheet_directory_uri() . '/custom-script.js',
['jquery-min'],
null
);
});
上記のコードだけではコアに登録されるだけで、キューに登録はされていないためフロントエンド側のどこにも出力されません。
登録したスクリプトを出力したい場合は、以下のコードを記載すると依存関係を保持したまま出力されます。
使いたい場所でハンドル名を呼び出すだけでOK
add_action('wp_enqueue_scripts', function () {
wp_enqueue_script('custom-script');
});
上記のコードを記載するとHTMLのソースには以下のタグが挿入されます。
jQueryが挿入された箇所の後にcustom-script.js
が読み込まれています。
<script type='text/javascript' src='https://code.jquery.com/jquery-3.7.0.min.js' id='jquery-min-js'></script>
<script type='text/javascript' src='https://it-manabi.com/wp-content/themes/swell_child/custom-script.js' id='custom-script-js'></script>
wp_enqueue_script()
でも依存関係を指定出来る引数が用意されています。
しかし依存関係にて指定される必須スクリプトはwp_register_script()
をなるべく使いましょう。という説明を誰もがしています。
なぜwp_enqueue_script()
で必須スクリプトの登録は推奨されないのか?その理由はスクリプト
の依存関係を適切に処理するためです。
必須スクリプトに関してはwp_register_script()
を使って事前に全てコア登録をしておけば、依存関係が正しく認識され、正しい順序でスクリプトが読み込まれwp_enqueue_script()
を使用した際に、良きせぬエラーに遭遇する確率も減るためwp_register_script()
が推奨されているのです。
スクリプトの一元管理と処理の分離
wp_register_script()
を使う最大のメリットはこれでしょう。
スクリプトの記述を全て一箇所にまとめ、使いたい所でwp_enqueue_script()
にて呼び出す。
もしスクリプトのファイル名やURLが変わったとしても、wp_register_script()
の$src
を変更するだけで済む保守性の高さが魅力的です。
add_action('wp_enqueue_scripts', function () {
wp_enqueue_script(
'custom-script',
get_stylesheet_directory_uri() . '/custom-script.js'
);
});
add_action('wp_enqueue_scripts', function () {
wp_enqueue_script(
'custom-script',
get_stylesheet_directory_uri() . '/custom-script.js'
);
});
page.php
とsingle.php
内にcustom-script.js
を追加している例です。
上記の書き方だとcustom-script.js
をnew-script.js
に変更したいと思った時、page.php
とsingle.php
、どちらの記述も書き直さなければなりません。
例では二つのファイルだけにしか記述していないので、手直しが簡単に思えるかもしれませんが、これが何十個ものファイルに記載されていたとすれば修正作業が大変なのは一目瞭然ですよね。
add_action('wp_enqueue_scripts', function () {
wp_register_script(
'custom-script',
get_stylesheet_directory_uri() . '/custom-script.js'
);
});
add_action('wp_enqueue_scripts', function () {
wp_enqueue_script('custom-script');
});
add_action('wp_enqueue_scripts', function () {
wp_enqueue_script('custom-script');
});
script.php
というスクリプトを一元管理(事前登録)するファイルを作成し、 page.php
とsingle.php
内では登録スクリプトを呼び出しているだけの例です。
上記の書き方だとスクリプトのパスcustom-script.js
をnew-script.js
に変更したいと思った時、script.php
のファイルパス記述を修正するだけです。
複数呼び出す可能性があるスクリプトは、この様な使い方をすると保守性の高いコードが書けるようになります。
呼び出すアクションフック名一覧
javascriptを挿入したい場所によって、指定するアクションフック名が変わります。
適切な場所を指定してカスタマイズを行いましょう。
- フロントエンド
-
wp_enqueue_scripts
- 管理画面
-
admin_enqueue_scripts
- ログイン画面
-
login_enqueue_scripts
フロントエンドにjQueryを登録する例
add_action('wp_enqueue_scripts', function () {
wp_register_script(
'jquery-min',
'https://code.jquery.com/jquery-3.7.0.min.js',
[],
'3.7.0'
);
});
適切なバージョン管理とフッターで読み込む例
ファイルの最終更新時刻を利用
add_action('wp_enqueue_scripts', function () {
wp_register_script(
'custom-script',
get_stylesheet_directory_uri() . '/custom-script.js',
[],
filemtime(get_stylesheet_directory() . '/custom-script.js'),
true
);
});
filemtime
を利用してバージョン管理をしています。
custom-script.js
ファイルが更新されると適切なタイムスタンプに更新されます。
タイムスタンプをdate関数で整形した場合のコード例
add_action('wp_enqueue_scripts', function () {
wp_register_script(
'custom-script',
get_stylesheet_directory_uri() . '/custom-script.js',
[],
date('YmdHis', filemtime(get_stylesheet_directory() . '/custom-script.js')),
true
);
});
こちらの方がカスタマイズする際にソースを確認した時に分かりやすいのでオススメです。
出力するwp_enqueue_script()を忘れずに
wp_register_script()
はあくまでスクリプトをコア登録(事前予約)するだけの関数です。
ソースコードに吐き出したい時はwp_enqueue_script()
を必ず使う必要があります。
出力し忘れが無いように、セットで使う必要があると覚えておきましょう。

まとめ記事
WordPressにCSSやJSを追加・削除する方法を全て網羅し、分かりやすく整理したまとめ記事も作成しておりますので、より理解を深めるためにお読み下さい。

コメント