ฉันมีจาวาสคริปต์ที่มีวัตถุตามตัวอักษร แต่ฉันต้อง จำกัด มันและฉันพยายามหาวิธีเขียนมันใหม่เพื่อที่ฉันจะได้รับ wp_localize_script () เพื่อรับมันและออกรูปแบบที่ถูกต้อง
รุ่นที่ไม่ใช่ภาษาท้องถิ่น (ไม่ใช่ไดนามิก) มีลักษณะดังนี้:
var layoyt_config = {
'header' : 1
, 'footer' : 1
, 'ls' : {'sb1':1}
, 'rs' : {'sb1':1,'sb2':1}
, 'align' : 'center'
};
ตอนนี้เพื่อให้มีค่าเหล่านั้นที่สร้างขึ้นโดย php (ขึ้นอยู่กับบาง wp_settings) ฉันต้องการใช้ wp_localize_script ดังนั้นฉันสามารถเอามันจากที่นั่น:
var layoyt_config = my_localized_data.layoyt_config;
และเพื่อให้ได้ข้อมูลนั้นไปยังคุณสมบัติของวัตถุนั้นฉัน 'คิด' ฉันสามารถทำสิ่งนี้ได้ แต่ไม่ชัดเจน:
$data = array(
'layout_config' => {
'header' : 1
, 'footer' : 1
, 'ls' : {'sb1': 1}
, 'rs' : {'sb1': 1,'sb2': 1}
, 'align' : 'center'
}
);
wp_localize_script('my-script-handle', 'my_localized_data', $data);
เช่นนี้จะทำให้เกิดข้อผิดพลาดในการแยกวิเคราะห์ PHP ฉันพยายามที่จะเขียน json เพื่ออาเรย์ไวยากรณ์เนื่องจาก wp_localize_script จะแปลงที่กลับไปเป็นสัญกรณ์วัตถุ แต่สิ่งนี้ไม่ได้สำหรับฉัน:
$data = array(
'layout_config' => array(
'header' => 1
, 'footer' => 1
, 'ls' => array('sb1'=>1)
, 'rs' => array('sb1'=>1,'sb2'=>1)
, 'align' => 'center'
)
);
wp_localize_script('my-script-handle', 'my_localized_data', $data);
และในขณะที่มันทำงานได้อย่างราบรื่นเมื่อ php parser ฉันไม่ได้รับผลลัพธ์ที่คาดหวังในแหล่งที่มาของหน้าของฉันเป็น my_localized_data.layout_config กลายเป็นสตริง "Array" นี่คือผลลัพธ์:
<script type='text/javascript'>
/* <![CDATA[ */
var wpkit_localized_data = {
layout_config: "Array"
};
/* ]]> */
</script>
ดังนั้น .. ฉันจะทำสิ่งนี้ได้อย่างไร (หรือฉันต้องยอมรับว่าฉันจะต้อง 'แผ่' วัตถุของฉันลงใน vars แบบแยกเช่น:
lc_header = '1';
ls_ls_sb1 = '1';
etc...