2014-09-28 46 views
0

我有一个简单的foreach函数,可以在我的网站中加载一组脚本。唯一的问题是我添加的2个新脚本需要位于不同的文件夹位置,所以我现有的foreach不起作用。检查多个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.minfunctions文件在/js/作为反对/assets/js/那么,有没有办法,我检查变量或者是这2和输出略有不同register_scriptenqueue_script功能?

+0

if($ script ==''|| $ script =='foundation.min') – 2014-09-28 13:58:20

+0

我建议将相对目录路径添加到您的每个脚本中。这很容易,而不是用条件弄脏你的循环。 – 2014-09-28 14:18:46

回答

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); 
} 
+0

这是输出主题目录('get_template_directory_uri'部分两次,并与阵列它只是输出Array.js(例如:http://mythemelocation.com/js/Array.js) – 2014-09-28 14:36:23

+0

您复制了我的代码或你修改它? – hek2mgl 2014-09-28 15:05:35

+0

...我的意思是说,它应该工作,如果你把它,因为它 – hek2mgl 2014-09-28 15:14:10

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); 
    } 
} 

?> 

它实质上组脚本转换为根据不同的地点两个不同的阵列。然后在循环中,它们都被相应处理。

+0

你的解决方案的问题是脚本最后执行,另一方面脚本'foundation.min'和'功能'文件正在'/ assets/js /'文件之间注册。 – 2014-09-28 19:11:10