オブジェクトリテラルを含む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の解析エラーが発生するので、wp_localize_scriptがそれをオブジェクト表記に変換するため、jsonを配列構文に書き直そうとしましたが、これもうまくいきません:
$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が文字列「配列」になるため、ページソースで期待される出力が得られません。出力は次のとおりです。
<script type='text/javascript'>
/* <![CDATA[ */
var wpkit_localized_data = {
layout_config: "Array"
};
/* ]]> */
</script>
だから..これを行うにはどうすればよいですか(または、オブジェクトを次のような離散変数に「フラット化」する必要があることを受け入れる必要がありますか?
lc_header = '1';
ls_ls_sb1 = '1';
etc...