This post summarizes some of the changes to the script loader and script/style dependencies in WordPress 4.5.
Individual stylesheets instead of wp-admin.min.css
Ticket: #35229
Currently, WordPress generates and ships relatively large 235KB wp-admin.min.css
and wp-admin-rtl.min.css
files which are created from source files which we also ship.
With WordPress 4.5 we stop generating these files and instead rely upon load-styles.php
to combine them. This removes the requirement from shipping for commits such as [35896] 510KB of CSS. Instead, we only have to ship the 4 dashboard.css
files which are around 72KB.
For plugin authors nothing should change because the script loader takes care of the new dependency for the wp-admin
handle. Also, wp-admin.*
files are still generated for compatibility purposes, however, they only include the @import()
lines.
Breaking Change: If your plugin or theme is still using the deprecated media functionality please note that in [36869] the style handle was changed from media
to media-deprecated
.
HTTP ETag header for load-scripts.php
and load-styles.php
Ticket: #28722
Both loaders for script and style concatenation are now sending an ETag
header which includes the value of $wp_version
. This improves performance since browsers won’t re-download the scripts and styles when they send the HTTP_IF_NONE_MATCH
header and there was no change in $wp_version
. ⚡️
wp_add_inline_script()
Ticket: #14853
For quite some time wp_add_inline_style()
has been available to add extra CSS styles to a registered stylesheet. Now there’s an equivalent function to do the same for inline JavaScript. wp_add_inline_script()
can be used to add extra scripts either before or after a registered script using the optional third $position
argument.
For example, the following code can be used to easily add Typekit’s JavaScript to your theme:
function mytheme_enqueue_typekit() { wp_enqueue_script( 'mytheme-typekit', 'https://use.typekit.net/<typekit-id>.js', array(), '1.0' ); wp_add_inline_script( 'mytheme-typekit', 'try{Typekit.load({ async: true });}catch(e){}' ); } add_action( 'wp_enqueue_scripts', 'mytheme_enqueue_typekit' );
Which results in:
<script type='text/javascript' src='https://use.typekit.net/<typekit-id>.js?ver=1.0'></script> <script type='text/javascript'> try{Typekit.load({ async: true });}catch(e){} </script>
Scripts/Styles with “alias” handles
Ticket: #35643, #25247, #35229
Alias handles are handles without a $src
parameter. Those can be used to group dependencies, like core is doing for jQuery. [36550] changes how those handles are loaded, more specifically, they are no longer skipped early in WP_Dependencies
.
Now, inline styles and scripts attached to alias handles will do something important — get printed out. This change was required by the switch to an alias handle for wp-admin
to provide backwards compatibility for plugins which are adding inline styles to the wp-admin
handle.
Support for scripts with dependencies in different groups
Scripts can be registered in two groups: head or footer. Previously, dependencies of registered scripts were moved to the header, even when the script that depends on them is loaded in the footer. This was fixed in [36871]. The changeset includes some expressive tests to demonstrate how complex dependencies, like “grandchild” dependencies, can be enqueued.
Last, but not least, WP_Dependencies
, WP_Styles
, and WP_Scripts
are now fully documented.
Thanks to @abiralneupane, @atimmer, @dd32, @gitlost, @ocean90, @sebastian.pisula, @sergej.mueller, @stephenharris, and @swissspidy for their contributions!
Enhanced Script Loader in WordPress 4.5 by Dominik Schilling (ocean90) was originally posted at https://make.wordpress.org/core/2016/03/08/enhanced-script-loader-in-wordpress-4-5/
No comments:
Post a Comment