2015-02-07 97 views
1

我有一個稱爲「rooms」的帖子類型,每個房間都有一個元變量,如$max_person。在single-rooms.php 所有我需要的是通過$max_person外部javascript文件如何使用wp_localize_script從另一個php文件傳遞參數

這是我在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

+0

你做完了'$ combo_parameters'變量的'var_dump'以檢查它是否具有所需的數據?我看到的一個潛在問題是您沒有將'$ post'變量聲明爲全局變量。 – 2015-02-07 18:47:58

+0

@DominicP我如何聲明'$ post'爲全局變量 – 2015-02-07 18:58:32

+0

在你的函數開頭添加'global $ post;'。 – 2015-02-07 19:12:21

回答

0

問題是, $post變量未被聲明爲全局變量,因此get_post_meta失敗,因爲它未通過有效的帖子ID。

只需在函數的開頭添加global $post來引用全局變量。

查看PHP文檔瀏覽:http://php.net/manual/en/language.variables.scope.php

相關問題