wp_head でヘッダに追記する で記載した wp_enqueue_script は、外部ファイルをに登録する際にその名称やバージョンをグローバル変数 $wp_scripts で管理して出力してくれるらしいという件について調べてみた。(参考)WordPress フォーラム
wp_enqueue_script は以下のように引数として渡されたスクリプトを、グローバル変数 $wp_scripts に登録している。
$wp_scripts は wp-includes/class.wp-scripts.php で定義されているクラスで WP_Dependencies を継承している(WP_Dependencies は wp-includes/class.wp-dependencies.php )。
関数 wp_enqueue_script で実行される $wp_scripts->enqueue( $handle ) はWP_Dependenciesクラスで定義されている。
wp-includes/functions.wp-scripts.php
/**
* Enqueues script.
*
* Registers the script if src provided (does NOT overwrite) and enqueues.
*
* @since r16
* @see wp_register_script() For parameter information.
*/
function wp_enqueue_script( $handle, $src = false, $deps = array(), $ver = false, $in_footer = false ) {
global $wp_scripts;
if ( !is_a($wp_scripts, 'WP_Scripts') )
$wp_scripts = new WP_Scripts();
if ( $src ) {
$_handle = explode('?', $handle);
$wp_scripts->add( $_handle, $src, $deps, $ver );
if ( $in_footer )
$wp_scripts->add_data( $_handle, 'group', 1 );
}
$wp_scripts->enqueue( $handle );
}
wp-includes/class.wp-dependencies.php
function enqueue( $handles ) {
foreach ( (array) $handles as $handle ) {
$handle = explode('?', $handle);
if ( !in_array($handle, $this->queue) && isset($this->registered]) ) {
$this->queue = $handle;
if ( isset($handle) )
$this->args] = $handle;
}
}
}
さて、実際に $wp_scripts を出力してみた出力結果は以下の通り。
続きを読む→