如何使用 wp_localize_script 从另一个 php 文件传递参数
How to pass parameter from another php file using wp_localize_script
我有一个名为 "rooms" 的 post 类型,每个房间都有一个元变量,如 $max_person
。在 single-rooms.php
我只需要将 $max_person
传递给外部 javascript
文件
这是我在function.php
中写的 -
add_action("wp_enqueue_scripts", function() {
if (is_single()) {
if (get_post_type() == 'rooms') {
$max_person = get_post_meta($post->ID,'max_person',true);
$combo_parameters = array(
'max' => $max_person
);
wp_enqueue_script('room_combobox', get_template_directory_uri() . '/js/room_combobox.js', array( 'jquery' ), '1.0' ,true);
wp_localize_script( 'room_combobox', 'ComboParameters', $combo_parameters );
}
}
});
这是我的 javascript 文件
function room_combobox() {
var text = "";
var i;
var x = ComboParameters.max;
for (i = 0; i <= x; i++) {
text += "<option value="+i+">"+i+"</option>" +"<br>";
}
document.getElementById("combo").innerHTML = '<select name= "room-adults" id= "single-room-adult-selection"><option>No. adults</option>'+text+x+'</select>';
}
jQuery(document).ready(function() {
room_combobox()
});
由于某些原因 ComboParameters.max = 0
问题是 $post
变量未声明为全局变量,因此 get_post_meta
失败,因为它未传递有效的 post ID。
只需在函数开头加上global $post
即可引用全局变量。
在此处查看 php 文档:http://php.net/manual/en/language.variables.scope.php
我有一个名为 "rooms" 的 post 类型,每个房间都有一个元变量,如 $max_person
。在 single-rooms.php
我只需要将 $max_person
传递给外部 javascript
文件
这是我在function.php
中写的 -
add_action("wp_enqueue_scripts", function() {
if (is_single()) {
if (get_post_type() == 'rooms') {
$max_person = get_post_meta($post->ID,'max_person',true);
$combo_parameters = array(
'max' => $max_person
);
wp_enqueue_script('room_combobox', get_template_directory_uri() . '/js/room_combobox.js', array( 'jquery' ), '1.0' ,true);
wp_localize_script( 'room_combobox', 'ComboParameters', $combo_parameters );
}
}
});
这是我的 javascript 文件
function room_combobox() {
var text = "";
var i;
var x = ComboParameters.max;
for (i = 0; i <= x; i++) {
text += "<option value="+i+">"+i+"</option>" +"<br>";
}
document.getElementById("combo").innerHTML = '<select name= "room-adults" id= "single-room-adult-selection"><option>No. adults</option>'+text+x+'</select>';
}
jQuery(document).ready(function() {
room_combobox()
});
由于某些原因 ComboParameters.max = 0
问题是 $post
变量未声明为全局变量,因此 get_post_meta
失败,因为它未传递有效的 post ID。
只需在函数开头加上global $post
即可引用全局变量。
在此处查看 php 文档:http://php.net/manual/en/language.variables.scope.php