我有一个简单的foreach函数,可以在我的网站中加载一组脚本。唯一的问题是我添加的2个新脚本需要位于不同的文件夹位置,因此我现有的foreach不起作用。
有没有办法可以检查变量的值,如果它是2个新脚本中的一个,输出稍微不同的函数?
这就是我现在所拥有的;
$scripts = array(
'modernizr',
'browser-detect',
'foundation.min',
'functions',
'rem',
'custom'
);
foreach ($scripts as $script){
wp_register_script($script, get_template_directory_uri() . '/assets/js/'.$script.'.js#asyncload', 'jquery', '', true);
wp_enqueue_script($script);
}
现在foundation.min
和functions
文件位于/js/
,与/assets/js/
相反,所以我有办法检查变量是否是这两个中的任何一个输出略有不同的register_script
和enqueue_script
函数?
答案 0 :(得分:0)
您可以通过提供将脚本指定为包含脚本名称的数组和文件夹(如果该文件夹不是默认文件夹)来使其更加灵活。像这样:
$scripts = array(
'modernizr',
'browser-detect',
array('foundation.min', '/js'),
'functions',
'rem',
'custom'
);
foreach ($scripts as $script){
if(is_array($script)) {
$scriptname = $script[0];
$folder = $script[1];
} else {
$scriptname = $script;
$folder = '/assets/js';
}
$path = get_template_directory_uri();
$path .= "$path/$script.js#asyncload";
wp_register_script($scriptname, $path, 'jquery', '', true);
wp_enqueue_script($scriptname);
}
答案 1 :(得分:0)
像这样的东西可能是你正在寻找的东西:
<?php
$scripts = array ('/assets/js/' => array ('modernizr','browser-detect','rem','custom'),
'/js/' => array ('foundation.min','functions'));
foreach ($scripts as $loc => $script) {
foreach ($script as $name) {
wp_register_script($name, get_template_directory_uri() . $loc.$name.'.js#asyncload', 'jquery', '', true);
wp_enqueue_script($name);
}
}
?>
它实际上根据位置将脚本分为两个不同的数组。然后在循环中它们都得到了相应的处理。