Javascript 如何使用wp_localize_脚本从另一个php文件传递参数

Javascript 如何使用wp_localize_脚本从另一个php文件传递参数,javascript,php,wordpress,Javascript,Php,Wordpress,我有一个名为“房间”的帖子类型,每个房间都有一个元变量,如$max\u person。在single rooms.php中 我所需要的就是将$max\u person传递到一个外部javascript文件 这是我在function.php- add_action("wp_enqueue_scripts", function() { if (is_single()) { if (get_post_type() == 'rooms') { $max_

我有一个名为“房间”的帖子类型,每个房间都有一个元变量,如
$max\u person
。在
single rooms.php中
我所需要的就是将
$max\u 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()
});
功能室\u组合框(){
var text=“”;
var i;
var x=ComboParameters.max;

对于(i=0;i而言,问题在于
$post
变量未声明为全局变量,因此
get\u post\u meta
失败,因为它未传递有效的post ID

只需在函数开头添加
global$post
,即可引用全局变量


请参见此处的php文档:

您是否对
$combo\u参数
变量执行了
var\u dump
,以检查它是否具有您期望的数据?我看到的一个潜在问题是,您没有将
$post
变量声明为全局变量。@DominicP我如何将
$post
声明为全局变量添加
全局$post;
函数的开始。@DominicP ThnQ它工作正常:)不客气。我很高兴它工作正常。我在下面添加了解决方案作为答案。