在WordPress中,wp_localize_script()
函数是一个非常有用的工具,它允许你将PHP变量传递给JavaScript。以下是如何使用 wp_localize_script()
将数据传递给JavaScript的步骤:
-
首先,确保你在加载脚本时已经正确地注册了该脚本。通常,这会在
functions.php
文件中的wp_enqueue_scripts
动作钩子中完成。 -
使用
wp_localize_script()
函数来创建一个JavaScript对象,并将你的数据作为该对象的属性。
以下是一个示例:
function my_custom_scripts() {
// 注册一个JavaScript文件
wp_enqueue_script('my-custom-script', get_template_directory_uri() . '/js/my-script.js', array('jquery'), '1.0', true);
// 创建一个名为 'myLocalizedData' 的JavaScript对象,并将数据传递给它
$translation_array = array(
'ajaxUrl' => admin_url('admin-ajax.php'), // 传递admin-ajax.php的URL
'siteUrl' => get_site_url(), // 传递站点URL
'someData' => '一些数据', // 传递一些自定义数据
'nonce' => wp_create_nonce('my-nonce') // 传递一个nonce值用于安全验证
);
// 将PHP变量传递给JavaScript
wp_localize_script('my-custom-script', 'myLocalizedData', $translation_array);
}
add_action('wp_enqueue_scripts', 'my_custom_scripts');
在上面的代码中,我们首先注册了一个名为 my-custom-script
的JavaScript文件。然后,我们创建了一个名为 $translation_array
的数组,包含了我们想要传递给JavaScript的数据。最后,我们使用 wp_localize_script()
函数将这些数据传递给 myLocalizedData
对象。
在JavaScript文件 my-script.js
中,你可以像下面这样访问这些数据:
jQuery(document).ready(function($) {
console.log(myLocalizedData.ajaxUrl); // 输出admin-ajax.php的URL
console.log(myLocalizedData.siteUrl); // 输出站点URL
console.log(myLocalizedData.someData); // 输出 '一些数据'
console.log(myLocalizedData.nonce); // 输出nonce值
});
通过这种方式,你可以很容易地在WordPress主题或插件中将PHP变量传递给JavaScript。