2013-04-15 37 views
5

我在我的主題functions.php中有以下代碼,但當我撥打console.log(pw_script_vars);時,變量爲undefined。我錯過了什麼?wp_localize_script不工作

function mytheme_enqueue_scripts(){ 
    wp_enqueue_script('jquery'); 

} 
add_action('wp_enqueue_scripts', 'mytheme_enqueue_scripts'); 

function pw_load_scripts() { 

    wp_enqueue_script('pw-script'); 
    wp_localize_script('pw-script', 'pw_script_vars', array(
      'alert' => __('Hey! You have clicked the button!', 'pippin'), 
      'message' => __('You have clicked the other button. Good job!', 'pippin') 
     ) 
    ); 


} 
add_action('wp_enqueue_scripts', 'pw_load_scripts'); 

回答

12

您沒有在您的wp_enqueue_script中包含任何JavaScript文件。

function pw_load_scripts() { 

    wp_enqueue_script('pw-script', get_template_directory_uri() . '/test.js'); 
    wp_localize_script('pw-script', 'pw_script_vars', array(
      'alert' => __('Hey! You have clicked the button!', 'pippin'), 
      'message' => __('You have clicked the other button. Good job!', 'pippin') 
     ) 
    ); 


} 
add_action('wp_enqueue_scripts', 'pw_load_scripts'); 

創建一個名爲在你的主題目錄test.js和 它工作在一個空文件。

如果你再看看你的源代碼,你會看到:

<script type='text/javascript'> 
/* <![CDATA[ */ 
var pw_script_vars = {"alert":"Hey! You have clicked the button!","message":"You have clicked the other button. Good job!"}; 
/* ]]> */ 
</script> 

然後,您可以在控制檯輸入pw_script_vars.alert得到"Hey! You have clicked the button!"消息。

+0

感謝您的回覆,但我的意圖是在jQuery中傳遞一些php數組,我可以在模板的每個頁面上呼籲... –

+0

這正是上面的代碼所做的。你有什麼問題嗎? – RRikesh

+0

我得到了腳本:http://papermashup.com/jquery-iphone-style-ajax-switch/我做了:\t wp_enqueue_script('ajax-switch',get_bloginfo('template_url')。'/ includes/ajaxswitch /jquery.iphone-switch.js',false,false); \t global $ current_user; \t wp_localize_script( 'Ajax的開關', 'ajax_switch',陣列( \t \t \t \t 'post_status'=> get_user_meta($ current_user-> ID, '_fbpost_status',真), \t \t \t \t 'templateUrl'= > get_template_directory_uri() '/包括/ ajaxswitch /' \t \t \t \t) \t \t); 工作非常感謝你,第二件事是在那些php文件中我需要包含wordpress變量和php庫。怎麼樣? –

1

你也可以嘗試本地化jQuery而不需要創建額外的空JS文件。

wp_localize_script('jquery', 'pw_script_vars', array(
     'alert' => __('Hey! You have clicked the button!', 'pippin'), 
     'message' => __('You have clicked the other button. Good job!', 'pippin') 
    ) 
); 

它對我來說就像一個魅力。希望能幫助到你。