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 Created for both bug reports and feature development on the bug tracker.: #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 Cascading Style Sheets.. Instead, we only have to ship the 4 dashboard.css
files which are around 72KB.
For plugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party 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 HTTP is an acronym for Hyper Text Transfer Protocol. HTTP is the underlying protocol used by the World Wide Web and this protocol defines how messages are formatted and transmitted, and what actions Web servers and browsers should take in response to various commands. ETag header The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitor’s opinion about your content and you/ your organization’s brand. It may also look different on different screen sizes. 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 JavaScript or JS is an object-oriented computer programming language commonly used to create interactive effects within web browsers. WordPress makes extensive use of JS for a better user experience. While PHP is executed on the server, JS executes within a user’s browser. https://www.javascript.com/.. 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
Ticket: #35873, #35873
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!
#4-5, #dev-notes, #script-loader