我有一个包含对象文字的javascript工作片段。但是我需要对其进行本地化,并且我正尝试找出如何重写它,以便可以获取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解析器可以顺利运行,但是由于my_localized_data.layout_config变成了字符串“ Array”,因此在页面源中没有得到预期的输出,以下是输出:
<script type='text/javascript'>
/* <![CDATA[ */
var wpkit_localized_data = {
layout_config: "Array"
};
/* ]]> */
</script>
所以..我该怎么做(或者我只需要接受必须将对象“展平”为离散变量,例如:
lc_header = '1';
ls_ls_sb1 = '1';
etc...