Ich habe ein funktionierendes Stück Javascript, das ein Objektliteral enthält. Aber ich muss es lokalisieren und versuche herauszufinden, wie ich es umschreiben kann, damit ich wp_localize_script () bekomme, um es zu aktivieren und das richtige Format auszugeben.
Die nicht lokalisierte (nicht dynamische) Version sieht folgendermaßen aus:
var layoyt_config = {
'header' : 1
, 'footer' : 1
, 'ls' : {'sb1':1}
, 'rs' : {'sb1':1,'sb2':1}
, 'align' : 'center'
};
Um diese Werte von PHP generieren zu lassen (basierend auf einigen wp_settings), möchte ich wp_localize_script verwenden, damit ich sie von dort übernehmen kann:
var layoyt_config = my_localized_data.layoyt_config;
Und um diese Daten in diese Objekteigenschaft zu bekommen, dachte ich, dass ich das tun könnte, aber offensichtlich nicht:
$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);
Da dies zu PHP-Analysefehlern führt, habe ich versucht, die Syntax von json in array umzuschreiben, da wp_localize_script diese zurück in die Objektnotation konvertiert, aber das funktioniert auch bei mir nicht:
$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);
Und während dies reibungslos über den PHP-Parser läuft, erhalte ich in meiner Seitenquelle nicht die erwartete Ausgabe, da my_localized_data.layout_config zu einem String "Array" wird. Hier ist die Ausgabe:
<script type='text/javascript'>
/* <![CDATA[ */
var wpkit_localized_data = {
layout_config: "Array"
};
/* ]]> */
</script>
Also .. Wie kann ich das machen (oder muss ich einfach akzeptieren, dass ich mein Objekt in diskrete Vars 'platt machen' muss wie:
lc_header = '1';
ls_ls_sb1 = '1';
etc...