Wp_register_scriptを実行し、ラベルとディレクトリを管理するためにforeachループを使用してエンキューする方法はあるのでしょうか。
例えば、
function wbs_app_components(){
$scripts_list=array(
'jquery' => ToDir('/jquery/jquery.js', $LIBRARY_DIR),
'bootstrap-jquery' => ToDir('/bootstrap/js/bootstrap.js', $LIBRARY_DIR),
}
foreach ($scripts_list as $key => $value){
// print_r($key);echo ("<br>");
// print_r($value);echo ("<br><br><br>");
wp_register_script($key,$value);
}
}
add_action( 'wp_enqueue_scripts', 'wbs_app_components');
しかし、面白いことに、スクリプトのどれも添付されておらず、エラーも報告されていないようです。
その理由は何だろうか
スクリプトを登録するだけでなく、スクリプトをエンキューする必要もあります。ただし、条件付きでエンキューしないのであれば、スクリプトを登録せずに単純にエンキューすることができます。
私はこのようなことを試してみたい:(テストされていないとPHP5.4 +が必要です)
add_action( 'wp_enqueue_scripts', enqueue_scripts, 11 );
function enqueue_scripts()
{
/**
* Build an array of scripts to enqueue
* key = script handle
* value = path to the script without the get_template_directory_uri()
*/
$scripts = [
'script-1' => '/script.1.js',
'script-2' => '/js/script.2.js',
'script-3' => '/subfolder/script.3.js',
];
foreach ( $scripts as $k=>$v )
wp_enqueue_script( $k, get_template_directory_uri() . $v );
}
答えへのコメントへの説明として、add_action()
呼び出しはどこにでも行くことができます、それは同じテンプレートにある必要さえありません。関数宣言の上または下に行くことができます。クロージャについて考えるとき、これはもっと理にかなっているので、関数の上にadd_action()
呼び出しを追加することを好みます。クロージャを使うとき、上のコードはこのようになります:
add_action( 'wp_enqueue_scripts', function ()
{
/**
* Build an array of scripts to enqueue
* key = script handle
* value = path to the script without the get_template_directory_uri()
*/
$scripts = [
'script-1' => '/script.1.js',
'script-2' => '/js/script.2.js',
'script-3' => '/subfolder/script.3.js',
];
foreach ( $scripts as $k=>$v )
wp_enqueue_script( $k, get_template_directory_uri() . $v );
}, 11 );
だから、あなたはそれを理解するだけでいいのです:-)
あなたのファイルを別々にエンキューしたいけれどもそれでもなおそれらを登録することができるなら(あなたはおそらく病棟の後にそれを使用したいと思う)それからこれを使用してください:
$template_directory = get_template_directory_uri();
$array_of_js_files = array(
array(
'script_handle1',
$template_directory . '/your_directory/file1.js',
array(), //any dependency your script has
'1.0.0', // version number 1.0.0 is an example
true // in footer or not
),
array(
'script_handle2',
$template_directory . '/your_directory/file2.js',
array(),
'1.0.0',
true
)
);
$array_of_css_files = array(
array(
'css_handle1',
$template_directory . '/your_directory/file1.css',
array(), //any dependency your css file has
'1.0.0', // version number 1.0.0 is an example
'screen' // media
),
array(
'css_handle2',
$template_directory . '/your_directory/file2.css',
array(),
'1.0.0',
'screen'
)
);
foreach( $array_of_js_files as $data ){
wp_register_script( $data[0], $data[1], $data[2], $data[3], $data[4] );
wp_enqueue_script( $data[0] );
}
// to enqueue your script or css file later simply refer to your the handle you created
foreach( $array_of_css_files as $data ){
wp_register_style( $data[0], $data[1], $data[2], $data[3], $data[4] );
wp_enqueue_style( $data[0] );
}
上記のコードはテストされていませんが、動作するはずです。