`functions.wp-scripts.php` contains a lot of duplicated code. Make 2 new functions: `wp_scripts()` and `wp_scripts_maybe_doing_it_wrong( $function )`, to encapsulate the repeated logic.

Props GaryJ, scribu, wonderboymusic.
Fixes #20513.

Built from https://develop.svn.wordpress.org/trunk@31192


git-svn-id: http://core.svn.wordpress.org/trunk@31173 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Scott Taylor 2015-01-16 02:07:22 +00:00
parent 378d66f038
commit 74a8d68bbf
2 changed files with 60 additions and 58 deletions

View File

@ -8,6 +8,43 @@
* @subpackage BackPress * @subpackage BackPress
*/ */
/**
* Initialize $wp_scripts if it has not been set.
*
* @global WP_Scripts $wp_scripts
*
* @since 4.2.0
*
* @return WP_Scripts
*/
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
*
* @since 4.2.0
*
* @param string $function
*/
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.' ),
'<code>wp_enqueue_scripts</code>',
'<code>admin_enqueue_scripts</code>',
'<code>login_enqueue_scripts</code>'
), '3.3' );
}
/** /**
* Print scripts in document head that are in the $handles queue. * Print scripts in document head that are in the $handles queue.
* *
@ -31,22 +68,16 @@ function wp_print_scripts( $handles = false ) {
* @since 2.1.0 * @since 2.1.0
*/ */
do_action( 'wp_print_scripts' ); do_action( 'wp_print_scripts' );
if ( '' === $handles ) // for wp_head if ( '' === $handles ) { // for wp_head
$handles = false; $handles = false;
global $wp_scripts;
if ( ! ( $wp_scripts instanceof 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.' ),
'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>login_enqueue_scripts</code>' ), '3.3' );
if ( !$handles )
return array(); // No need to instantiate if nothing is there.
else
$wp_scripts = new WP_Scripts();
} }
return $wp_scripts->do_items( $handles ); wp_scripts_maybe_doing_it_wrong( __FUNCTION__ );
if ( ! $handles ) {
return array(); // No need to instantiate if nothing is there.
}
return wp_scripts()->do_items( $handles );
} }
/** /**
@ -71,17 +102,13 @@ function wp_print_scripts( $handles = false ) {
* Default 'false'. Accepts 'false' or 'true'. * Default 'false'. Accepts 'false' or 'true'.
*/ */
function wp_register_script( $handle, $src, $deps = array(), $ver = false, $in_footer = false ) { function wp_register_script( $handle, $src, $deps = array(), $ver = false, $in_footer = false ) {
global $wp_scripts; $wp_scripts = wp_scripts();
if ( ! ( $wp_scripts instanceof WP_Scripts ) ) { wp_scripts_maybe_doing_it_wrong( __FUNCTION__ );
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.' ),
'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>login_enqueue_scripts</code>' ), '3.3' );
$wp_scripts = new WP_Scripts();
}
$wp_scripts->add( $handle, $src, $deps, $ver ); $wp_scripts->add( $handle, $src, $deps, $ver );
if ( $in_footer ) if ( $in_footer ) {
$wp_scripts->add_data( $handle, 'group', 1 ); $wp_scripts->add_data( $handle, 'group', 1 );
}
} }
/** /**
@ -116,14 +143,11 @@ function wp_register_script( $handle, $src, $deps = array(), $ver = false, $in_f
function wp_localize_script( $handle, $object_name, $l10n ) { function wp_localize_script( $handle, $object_name, $l10n ) {
global $wp_scripts; global $wp_scripts;
if ( ! ( $wp_scripts instanceof WP_Scripts ) ) { if ( ! ( $wp_scripts instanceof WP_Scripts ) ) {
if ( ! did_action( 'init' ) ) wp_scripts_maybe_doing_it_wrong( __FUNCTION__ );
_doing_it_wrong( __FUNCTION__, sprintf( __( 'Scripts and styles should not be registered or enqueued until the %1$s, %2$s, or %3$s hooks.' ),
'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>login_enqueue_scripts</code>' ), '3.3' );
return false; return false;
} }
return $wp_scripts->localize( $handle, $object_name, $l10n ); return wp_scripts()->localize( $handle, $object_name, $l10n );
} }
/** /**
@ -140,13 +164,7 @@ function wp_localize_script( $handle, $object_name, $l10n ) {
* @param string $handle Name of the script to be removed. * @param string $handle Name of the script to be removed.
*/ */
function wp_deregister_script( $handle ) { function wp_deregister_script( $handle ) {
global $wp_scripts; wp_scripts_maybe_doing_it_wrong( __FUNCTION__ );
if ( ! ( $wp_scripts instanceof 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.' ),
'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>login_enqueue_scripts</code>' ), '3.3' );
$wp_scripts = new WP_Scripts();
}
/** /**
* Do not allow accidental or negligent de-registering of critical scripts in the admin. * Do not allow accidental or negligent de-registering of critical scripts in the admin.
@ -173,7 +191,7 @@ function wp_deregister_script( $handle ) {
} }
} }
$wp_scripts->remove( $handle ); wp_scripts()->remove( $handle );
} }
/** /**
@ -196,13 +214,9 @@ function wp_deregister_script( $handle ) {
* Default 'false'. Accepts 'false' or 'true'. * Default 'false'. Accepts 'false' or 'true'.
*/ */
function wp_enqueue_script( $handle, $src = false, $deps = array(), $ver = false, $in_footer = false ) { function wp_enqueue_script( $handle, $src = false, $deps = array(), $ver = false, $in_footer = false ) {
global $wp_scripts; $wp_scripts = wp_scripts();
if ( ! ( $wp_scripts instanceof WP_Scripts ) ) {
if ( ! did_action( 'init' ) ) wp_scripts_maybe_doing_it_wrong( __FUNCTION__ );
_doing_it_wrong( __FUNCTION__, sprintf( __( 'Scripts and styles should not be registered or enqueued until the %1$s, %2$s, or %3$s hooks.' ),
'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>login_enqueue_scripts</code>' ), '3.3' );
$wp_scripts = new WP_Scripts();
}
$_handle = explode( '?', $handle ); $_handle = explode( '?', $handle );
@ -228,15 +242,9 @@ function wp_enqueue_script( $handle, $src = false, $deps = array(), $ver = false
* @param string $handle Name of the script to be removed. * @param string $handle Name of the script to be removed.
*/ */
function wp_dequeue_script( $handle ) { function wp_dequeue_script( $handle ) {
global $wp_scripts; wp_scripts_maybe_doing_it_wrong( __FUNCTION__ );
if ( ! ( $wp_scripts instanceof 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.' ),
'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>login_enqueue_scripts</code>' ), '3.3' );
$wp_scripts = new WP_Scripts();
}
$wp_scripts->dequeue( $handle ); wp_scripts()->dequeue( $handle );
} }
/** /**
@ -253,13 +261,7 @@ function wp_dequeue_script( $handle ) {
* @return bool Whether the script script is queued. * @return bool Whether the script script is queued.
*/ */
function wp_script_is( $handle, $list = 'enqueued' ) { function wp_script_is( $handle, $list = 'enqueued' ) {
global $wp_scripts; wp_scripts_maybe_doing_it_wrong( __FUNCTION__ );
if ( ! ( $wp_scripts instanceof 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.' ),
'<code>wp_enqueue_scripts</code>', '<code>admin_enqueue_scripts</code>', '<code>login_enqueue_scripts</code>' ), '3.3' );
$wp_scripts = new WP_Scripts();
}
return (bool) $wp_scripts->query( $handle, $list ); return (bool) wp_scripts()->query( $handle, $list );
} }

View File

@ -4,7 +4,7 @@
* *
* @global string $wp_version * @global string $wp_version
*/ */
$wp_version = '4.2-alpha-31191'; $wp_version = '4.2-alpha-31192';
/** /**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema. * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.