Allow the 3rd argument to `wp_localize_script()/WP_Scripts->localize()` to be a `callable`, allowing data to be lazy-loaded when the script is actually enqueued.

Props jtsternberg.
Fixes #26111.


git-svn-id: https://develop.svn.wordpress.org/trunk@31030 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Scott Taylor 2015-01-03 03:53:30 +00:00
parent d5328fc674
commit c69dbc8b5a
2 changed files with 10 additions and 5 deletions

View File

@ -142,7 +142,7 @@ class WP_Scripts extends WP_Dependencies {
$tag = "<script type='text/javascript' src='$src'></script>\n";
/**
/**
* Filter the HTML script tag of an enqueued script.
*
* @since 4.1.0
@ -171,6 +171,10 @@ class WP_Scripts extends WP_Dependencies {
if ( $handle === 'jquery' )
$handle = 'jquery-core';
if ( is_callable( $l10n ) ) {
$l10n = call_user_func( $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']);

View File

@ -106,10 +106,11 @@ function wp_register_script( $handle, $src, $deps = array(), $ver = false, $in_f
*
* @todo Documentation cleanup
*
* @param string $handle Script handle the data will be attached to.
* @param string $object_name Name for the JavaScript object. Passed directly, so it should be qualified JS variable.
* Example: '/[a-zA-Z0-9_]+/'.
* @param array $l10n The data itself. The data can be either a single or multi-dimensional array.
* @param string $handle Script handle the data will be attached to.
* @param string $object_name Name for the JavaScript object. Passed directly, so it should be qualified JS variable.
* Example: '/[a-zA-Z0-9_]+/'.
* @param array|callable $l10n The data itself. The data can be either a single or multi-dimensional array. If a callable
* is passed, it will be invoked at runtime.
* @return bool True if the script was successfully localized, false otherwise.
*/
function wp_localize_script( $handle, $object_name, $l10n ) {