Index: wp-includes/class.wp-scripts.php =================================================================== --- wp-includes/class.wp-scripts.php (revision 19732) +++ wp-includes/class.wp-scripts.php (working copy) @@ -54,15 +54,34 @@ } function print_extra_script( $handle, $echo = true ) { - if ( !$output = $this->get_data( $handle, 'data' ) ) + $vars = $this->get_data($handle, 'data'); + if (empty($vars) || !is_array($vars)) { return; + } + + $output = ''; + foreach ($vars as $var=>$obj) { + if ( is_array($obj) && isset($obj['l10n_print_after']) ) { // back compat, preserve the code in 'l10n_print_after' if present + $after = $obj['l10n_print_after']; + unset($obj['l10n_print_after']); + } + + if (is_string($obj)) { + $obj = html_entity_decode( $obj, ENT_QUOTES, 'UTF-8'); + } + + $output .= "var $var = " . json_encode($obj) . ";\n"; + if (!empty($after)) { + $output .= "$after\n"; + } + } if ( !$echo ) return $output; echo "\n"; @@ -128,29 +147,18 @@ * Localizes only if the script has already been added */ function localize( $handle, $object_name, $l10n ) { - if ( is_array($l10n) && isset($l10n['l10n_print_after']) ) { // back compat, preserve the code in 'l10n_print_after' if present - $after = $l10n['l10n_print_after']; - unset($l10n['l10n_print_after']); + + $data = $this->get_data( $handle, 'data' ); + + if (empty($data) || !is_array($data)) { + $data = array(); } + + $data[$object_name] = $l10n; + + $return_val = $this->add_data( $handle, 'data', $data ); - foreach ( (array) $l10n as $key => $value ) { - if ( !is_scalar($value) ) - continue; - - $l10n[$key] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8'); - } - - $script = "var $object_name = " . json_encode($l10n) . ';'; - - if ( !empty($after) ) - $script .= "\n$after"; - - $data = $this->get_data( $handle, 'data' ); - - if ( !empty( $data ) ) - $script = "$data;\n$script"; - - return $this->add_data( $handle, 'data', $script ); + return $return_val; } function set_group( $handle, $recursion, $group = false ) {