2015-06-21 72 views
0

我試圖在我的wordpress插件中將我的PHP變量放到JS文件中。遵循蛋糕配方,代碼如下代碼片段。使用wp_localize_script函數將變量從PHP傳遞到Javascript

* PHP *

$someone = 'whatever'; 

function admin_script_style($hook) { 
    global $post_type; 
    wp_register_script('my_scripts', plugins_url('', __FILE__) .'/js/' . 'scripts.js', array('jquery'), '1.0', true); 
    wp_enqueue_script('my_scripts'); 
    wp_localize_script('my_scripts', 'ajax_object', array('ajax_url' => admin_url('admin-ajax.php'), 'my_var' => 'foo')); 
} 
add_action('admin_enqueue_scripts', 'admin_script_style'); 

這工作得很好,但是,如果我改變 「my_var」 爲PHP變量,像

wp_localize_script('prd_scripts_edicoes', 'ajax_object', array('ajax_url' => admin_url('admin-ajax.php'), 'my_var' => $someone)); 

這失敗,我的javascrip返回「my_var =空值」。

任何人都可以幫助我嗎?

回答

0

問題是$someone不在你的函數範圍內。

你可以將它導入範圍,宣稱它作爲全球然後訪問它:

global $someone; 
$someone = 'whatever'; 

function admin_script_style($hook) { 
    global $someone; 
    // $someone is now accessible 
    ... 
} 

需要注意的是,你不已經來聲明一個變量爲全局,當你設置它,如果你已經在全球範圍內。爲了明確起見,我希望總是將變量聲明爲全局變量,如果我打算在子範圍內訪問變量。

或者,而不是用你的鉤子命名功能,你可以通過一個封閉到add_action並宣佈$someone爲使用的變量:

$someone = 'whatever'; 
add_action('admin_enqueue_scripts', function($hook) use($someone) { 
    // $someone is now accessible 
    ... 
}); 
+0

非常感謝! –

相關問題