我在我的WordPress主题中设置了一个选项面板,我有一个选项,即" client_id"。我想使用该值并将其放入我的JavaScript文件中。这可能与WordPress?它有一个"编译器"可以将值返回到我的JS文件中?或者如何通过functions.php?
将JS函数添加到我的WordPress主题中目前我正在为我的所有样式和脚本使用wp_enqueue。我可以添加JS函数来入队吗?
答案 0 :(得分:1)
我在所有主题上使用本地化来获取JavaScript中的PHP数据。这并不难,我在下面详述。
首先,确保使用enqueue加载要在FOOTER中工作的javascript文件。如果它在页脚之前排队,您将无法获得任何数据,因为页脚是我们将数据提供给JavaScript的地方。这就是我在functions.php中的调用。 null和true参数对于使其工作至关重要,more info in codex
//functions.php
wp_enqueue_script('my_custom_javascript', get_template_directory_uri() . '/assets/js/scripts.js', array('jquery'), null, true);
然后在任何模板中,在代码顶部创建一个全局PHP数组变量。根据需要,将索引添加到包含有意义名称的数组,以及稍后要在JavaScript中使用的数据。
<?php // template file
get_header();
$javascript_data = array();
//... then throughout your template ...
$javascript_data['some_data'] = 'some value';
$javascript_data['more_data'] = $some_variable;
然后,在页脚中,在调用get_footer()之前,添加一个本地化函数,它将PHP变量(包含您在模板中添加的所有内容)包装在一个方便的javascript对象中。更多more info in codex
<?php //footer.php
wp_localize_script( 'my_custom_javascript', 'js_data', $javascript_data );
get_footer();
这将获取您在PHP数组中的所有数据,并将其本地化为您的my_custom_javascript脚本入队,然后创建一个对象,然后您可以立即在javascript文件中使用,如下所示:
// Javascript file
alert(js_data.some_data);
// or
console.log(js_data.more_data);
// I usually add this to the top of my JS for debugging
console.dir(js_data);
所以对你来说,完成上述操作后,你的functions.php可能包括:
$javascript_data['client_id'] = get_client_id();
function get_client_id(){
// $client_id = code to get the id here
// return $client_id
}
然后页脚会将该数据本地化到您的脚本中,并且js_data.client_id将在您的javascript文件中可用。
答案 1 :(得分:-5)
你可以用这种方式添加脚本
function wpb_adding_scripts() {
wp_register_script('my_test_script', plugins_url('test_script.js', __FILE__), array('jquery'),'1.1', true);
wp_enqueue_script('my_test_script');
}
add_action( 'wp_enqueue_scripts', 'wpb_adding_scripts' );