X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/256a3b381f63716209b3527d0a14442ae570c283..7f1521bf193b382565eb753043c161f4cb3fcda7:/wp-includes/functions.wp-scripts.php diff --git a/wp-includes/functions.wp-scripts.php b/wp-includes/functions.wp-scripts.php index ea719df3..c4be60c4 100644 --- a/wp-includes/functions.wp-scripts.php +++ b/wp-includes/functions.wp-scripts.php @@ -8,6 +8,44 @@ * @subpackage BackPress */ +/** + * Initialize $wp_scripts if it has not been set. + * + * @global WP_Scripts $wp_scripts + * + * @since 4.2.0 + * + * @return WP_Scripts WP_Scripts instance. + */ +function wp_scripts() { + global $wp_scripts; + if ( ! ( $wp_scripts instanceof WP_Scripts ) ) { + $wp_scripts = new WP_Scripts(); + } + return $wp_scripts; +} + +/** + * Helper function to output a _doing_it_wrong message when applicable. + * + * @ignore + * @since 4.2.0 + * + * @param string $function Function name. + */ +function _wp_scripts_maybe_doing_it_wrong( $function ) { + if ( did_action( 'init' ) ) { + return; + } + + _doing_it_wrong( $function, sprintf( + __( 'Scripts and styles should not be registered or enqueued until the %1$s, %2$s, or %3$s hooks.' ), + 'wp_enqueue_scripts', + 'admin_enqueue_scripts', + 'login_enqueue_scripts' + ), '3.3' ); +} + /** * Print scripts in document head that are in the $handles queue. * @@ -21,7 +59,7 @@ * * @since 2.6.0 * - * @param array|bool $handles Optional. Scripts to be printed. Default 'false'. + * @param string|bool|array $handles Optional. Scripts to be printed. Default 'false'. * @return array On success, a processed array of WP_Dependencies items; otherwise, an empty array. */ function wp_print_scripts( $handles = false ) { @@ -31,22 +69,20 @@ function wp_print_scripts( $handles = false ) { * @since 2.1.0 */ do_action( 'wp_print_scripts' ); - if ( '' === $handles ) // for wp_head + if ( '' === $handles ) { // for wp_head $handles = false; + } - global $wp_scripts; - if ( ! is_a( $wp_scripts, 'WP_Scripts' ) ) { - if ( ! did_action( 'init' ) ) - _doing_it_wrong( __FUNCTION__, sprintf( __( 'Scripts and styles should not be registered or enqueued until the %1$s, %2$s, or %3$s hooks.' ), - 'wp_enqueue_scripts', 'admin_enqueue_scripts', 'login_enqueue_scripts' ), '3.3' ); + _wp_scripts_maybe_doing_it_wrong( __FUNCTION__ ); - if ( !$handles ) + global $wp_scripts; + if ( ! ( $wp_scripts instanceof WP_Scripts ) ) { + if ( ! $handles ) { return array(); // No need to instantiate if nothing is there. - else - $wp_scripts = new WP_Scripts(); + } } - return $wp_scripts->do_items( $handles ); + return wp_scripts()->do_items( $handles ); } /** @@ -71,17 +107,13 @@ function wp_print_scripts( $handles = false ) { * Default 'false'. Accepts 'false' or 'true'. */ function wp_register_script( $handle, $src, $deps = array(), $ver = false, $in_footer = false ) { - global $wp_scripts; - if ( ! is_a( $wp_scripts, 'WP_Scripts' ) ) { - if ( ! did_action( 'init' ) ) - _doing_it_wrong( __FUNCTION__, sprintf( __( 'Scripts and styles should not be registered or enqueued until the %1$s, %2$s, or %3$s hooks.' ), - 'wp_enqueue_scripts', 'admin_enqueue_scripts', 'login_enqueue_scripts' ), '3.3' ); - $wp_scripts = new WP_Scripts(); - } + $wp_scripts = wp_scripts(); + _wp_scripts_maybe_doing_it_wrong( __FUNCTION__ ); $wp_scripts->add( $handle, $src, $deps, $ver ); - if ( $in_footer ) + if ( $in_footer ) { $wp_scripts->add_data( $handle, 'group', 1 ); + } } /** @@ -90,20 +122,22 @@ function wp_register_script( $handle, $src, $deps = array(), $ver = false, $in_f * Works only if the script has already been added. * * Accepts an associative array $l10n and creates a JavaScript object: - * - * "$object_name" = { - * key: value, - * key: value, - * ... - * } - * + * + * "$object_name" = { + * key: value, + * key: value, + * ... + * } + * * * @see WP_Dependencies::localize() - * @link http://core.trac.wordpress.org/ticket/11520 + * @link https://core.trac.wordpress.org/ticket/11520 * @global WP_Scripts $wp_scripts The WP_Scripts object for printing scripts. * * @since 2.6.0 * + * @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_]+/'. @@ -112,15 +146,12 @@ function wp_register_script( $handle, $src, $deps = array(), $ver = false, $in_f */ function wp_localize_script( $handle, $object_name, $l10n ) { global $wp_scripts; - if ( ! is_a( $wp_scripts, 'WP_Scripts' ) ) { - if ( ! did_action( 'init' ) ) - _doing_it_wrong( __FUNCTION__, sprintf( __( 'Scripts and styles should not be registered or enqueued until the %1$s, %2$s, or %3$s hooks.' ), - 'wp_enqueue_scripts', 'admin_enqueue_scripts', 'login_enqueue_scripts' ), '3.3' ); - + if ( ! ( $wp_scripts instanceof WP_Scripts ) ) { + _wp_scripts_maybe_doing_it_wrong( __FUNCTION__ ); return false; } - return $wp_scripts->localize( $handle, $object_name, $l10n ); + return wp_scripts()->localize( $handle, $object_name, $l10n ); } /** @@ -137,13 +168,7 @@ function wp_localize_script( $handle, $object_name, $l10n ) { * @param string $handle Name of the script to be removed. */ function wp_deregister_script( $handle ) { - global $wp_scripts; - if ( ! is_a( $wp_scripts, 'WP_Scripts' ) ) { - if ( ! did_action( 'init' ) ) - _doing_it_wrong( __FUNCTION__, sprintf( __( 'Scripts and styles should not be registered or enqueued until the %1$s, %2$s, or %3$s hooks.' ), - 'wp_enqueue_scripts', 'admin_enqueue_scripts', 'login_enqueue_scripts' ), '3.3' ); - $wp_scripts = new WP_Scripts(); - } + _wp_scripts_maybe_doing_it_wrong( __FUNCTION__ ); /** * Do not allow accidental or negligent de-registering of critical scripts in the admin. @@ -170,7 +195,7 @@ function wp_deregister_script( $handle ) { } } - $wp_scripts->remove( $handle ); + wp_scripts()->remove( $handle ); } /** @@ -182,7 +207,7 @@ function wp_deregister_script( $handle ) { * @global WP_Scripts $wp_scripts The WP_Scripts object for printing scripts. * * @since 2.6.0 - + * * @param string $handle Name of the script. * @param string|bool $src Path to the script from the root directory of WordPress. Example: '/js/myscript.js'. * @param array $deps An array of registered handles this script depends on. Default empty array. @@ -193,20 +218,23 @@ function wp_deregister_script( $handle ) { * Default 'false'. Accepts 'false' or 'true'. */ function wp_enqueue_script( $handle, $src = false, $deps = array(), $ver = false, $in_footer = false ) { - global $wp_scripts; - if ( ! is_a( $wp_scripts, 'WP_Scripts' ) ) { - if ( ! did_action( 'init' ) ) - _doing_it_wrong( __FUNCTION__, sprintf( __( 'Scripts and styles should not be registered or enqueued until the %1$s, %2$s, or %3$s hooks.' ), - 'wp_enqueue_scripts', 'admin_enqueue_scripts', 'login_enqueue_scripts' ), '3.3' ); - $wp_scripts = new WP_Scripts(); - } + $wp_scripts = wp_scripts(); + + _wp_scripts_maybe_doing_it_wrong( __FUNCTION__ ); + - if ( $src ) { - $_handle = explode('?', $handle); - $wp_scripts->add( $_handle[0], $src, $deps, $ver ); - if ( $in_footer ) + if ( $src || $in_footer ) { + $_handle = explode( '?', $handle ); + + if ( $src ) { + $wp_scripts->add( $_handle[0], $src, $deps, $ver ); + } + + if ( $in_footer ) { $wp_scripts->add_data( $_handle[0], 'group', 1 ); + } } + $wp_scripts->enqueue( $handle ); } @@ -221,15 +249,9 @@ function wp_enqueue_script( $handle, $src = false, $deps = array(), $ver = false * @param string $handle Name of the script to be removed. */ function wp_dequeue_script( $handle ) { - global $wp_scripts; - if ( ! is_a( $wp_scripts, 'WP_Scripts' ) ) { - if ( ! did_action( 'init' ) ) - _doing_it_wrong( __FUNCTION__, sprintf( __( 'Scripts and styles should not be registered or enqueued until the %1$s, %2$s, or %3$s hooks.' ), - 'wp_enqueue_scripts', 'admin_enqueue_scripts', 'login_enqueue_scripts' ), '3.3' ); - $wp_scripts = new WP_Scripts(); - } + _wp_scripts_maybe_doing_it_wrong( __FUNCTION__ ); - $wp_scripts->dequeue( $handle ); + wp_scripts()->dequeue( $handle ); } /** @@ -246,13 +268,29 @@ function wp_dequeue_script( $handle ) { * @return bool Whether the script script is queued. */ function wp_script_is( $handle, $list = 'enqueued' ) { - global $wp_scripts; - if ( ! is_a( $wp_scripts, 'WP_Scripts' ) ) { - if ( ! did_action( 'init' ) ) - _doing_it_wrong( __FUNCTION__, sprintf( __( 'Scripts and styles should not be registered or enqueued until the %1$s, %2$s, or %3$s hooks.' ), - 'wp_enqueue_scripts', 'admin_enqueue_scripts', 'login_enqueue_scripts' ), '3.3' ); - $wp_scripts = new WP_Scripts(); - } + _wp_scripts_maybe_doing_it_wrong( __FUNCTION__ ); + + return (bool) wp_scripts()->query( $handle, $list ); +} - return (bool) $wp_scripts->query( $handle, $list ); +/** + * Add metadata to a script. + * + * Works only if the script has already been added. + * + * Possible values for $key and $value: + * 'conditional' string Comments for IE 6, lte IE 7, etc. + * + * @since 4.2.0 + * + * @see WP_Dependency::add_data() + * + * @param string $handle Name of the script. + * @param string $key Name of data point for which we're storing a value. + * @param mixed $value String containing the data to be added. + * @return bool True on success, false on failure. + */ +function wp_script_add_data( $handle, $key, $value ){ + global $wp_scripts; + return $wp_scripts->add_data( $handle, $key, $value ); }