2011-08-16 94 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,可能有一些高速緩存的問題,但我寧願有一個比它的輸出內聯的所有選項。