2011-08-16 62 views
1

我使用wp_localize_script();改变JS的主题我建,就像这样:WordPress主题选项 - wp_localize_script();

wp_enqueue_script('custom', get_bloginfo('template_directory') . '/js/script.js'); 
    $settings = get_option('bro_options'); 
    wp_localize_script('custom','settings',$settings); 

虽然这是很好的,这样的工作方式是有问题的JS文件之前正确写入内嵌JS加载,这样你可以使用某些变量来修改JS以及它的功能。

问题是,我不太喜欢这个选项,以及它如何输出内联JS。有谁知道这个替代吗?我非常肯定,这不是每个人都如何用他们的主题选项做的,所以必须有另一种方式。

任何帮助将不胜感激,请不要链接到插件。

总之:我正在寻找一种替代方法来使用wp_localize_script();或更好的方式来使用它。

回答

0

我所做的是创建一个名为settings.js.php的文件,并且我包含了wp-config.php文件。

像这样:

<?php 

    header("Content-type: application/x-javascript"); 

    $c = 0; 

    while($exists !== true && $notfound !== true) { 

     $c++; 
     $str = $str . '../'; 

     if(file_exists($str.'wp-config.php')) { 
      $exists = true; 
      include($str.'wp-config.php'); 

      $i = 0; 
      $amount = sizeof($bro); 

      echo 'var settings={'; 
      foreach($bro as $key => $value) { 
       $i++; 
       if($i<$amount) { 
        echo $key . ':"' . $value . '",'; 
       } else { 
        echo $key . ':"' . $value . '"'; 
       } 
      } 
      echo '};'; 

     } 

     if($c === 20) { 
      $notfound = true; 
     } 

    } 

?> 

这将输出我在这样的变量选择:

var settings = { 
    foo: true, 
    bar: false 
}; 

我会这样,我能确定一些设置是排队此文件之前,我custom.js文件开启和关闭。

if(settings.foo === true) { 
    ... 
} 

这一切,所以我没有内联JS,可能有一些高速缓存的问题,但我宁愿有一个比它的输出内联的所有选项。