javascript - 如何使用 wp_localize_script 从另一个 php 文件传递​​参数

标签 javascript php wordpress

我有一个名为“房间”的帖子类型,每个房间都有一个元变量,例如 $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 失败,因为它未传递有效的帖子 ID。

只需将 global $post 添加到函数的开头即可引用全局变量。

请参阅此处的 php 文档:http://php.net/manual/en/language.variables.scope.php

关于javascript - 如何使用 wp_localize_script 从另一个 php 文件传递​​参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28385821/

相关文章:

css - 侧边栏区域未正确 float

javascript - 在 Django 模板中包含 JavaScript 的最佳实践

带有 jQ​​uery 的 JavaScript 命名空间

php - 为表中的每个组选择最后一个时间戳(记录)

php - 按对象属性对 php 对象数组进行分组

php - 在 Woocommerce 产品简短描述中动态替换自定义标签

php - 如何获取第一个数组元素(它本身就是数组)?

javascript - 将响应 header 从 ngResource 传递到 Controller

javascript - Google 电子表格 - 从 Zoho 获取记录

php - 使用 JQuery 和 Ajax 进行动态相关选择