Bundled Themes: Import Twenty Twenty, the new default theme for WordPress 5.3.
Welcome to the bundled themes family!
Theme development to this point has taken place on GitHub. See: https://github.com/WordPress/twentytwenty/.
Props anlino, ianbelanger, audrasjb, nielslange, fabiankaegy, mukesh27, poena, joyously, emiluzelac, williampatton, dingo-d, dkarfa, acosmin, rabmalin, kafleg, jeffpaul, hareesh-pillai, burhandodhy, afercia, juanfra, soean, presskopp, justinahinon, jrf, netweb, garyj, pento, flixos90, vbaimas, zebulan, byalextran, mor10, kjellr, allancole, tdh, karmatosed, mapk, matt, andrewtaylor-1, ismailelkorchi, garrett-eclipse, gsayed786, dianeco, celloexpressions, aristath, nadir, cbravobernal, intimez, hometowntrailers, collet, littlebigthing, tobifjellner, kevinkovadia, jarretc.
See #48110.
Built from https://develop.svn.wordpress.org/trunk@46271
git-svn-id: http://core.svn.wordpress.org/trunk@46083 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-23 16:16:00 -04:00
|
|
|
<?php
|
|
|
|
/**
|
Bundled Themes: Update Twenty Twenty.
This brings `trunk`’s version of Twenty Twenty in-sync with GitHub.
For a complete list of changes since [46271], see https://github.com/WordPress/twentytwenty/compare/932b16248...dd7032f
Props anlino, ianbelanger, nielslange, acosmin, netweb, williampatton, adhitya03, phpdocs, acalfieri, itowhid06, littlebigthing, aristath, karmatosed, poena.
See #48110.
Built from https://develop.svn.wordpress.org/trunk@46357
git-svn-id: http://core.svn.wordpress.org/trunk@46156 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-30 13:41:57 -04:00
|
|
|
* Javascript Loader Class
|
Bundled Themes: Import Twenty Twenty, the new default theme for WordPress 5.3.
Welcome to the bundled themes family!
Theme development to this point has taken place on GitHub. See: https://github.com/WordPress/twentytwenty/.
Props anlino, ianbelanger, audrasjb, nielslange, fabiankaegy, mukesh27, poena, joyously, emiluzelac, williampatton, dingo-d, dkarfa, acosmin, rabmalin, kafleg, jeffpaul, hareesh-pillai, burhandodhy, afercia, juanfra, soean, presskopp, justinahinon, jrf, netweb, garyj, pento, flixos90, vbaimas, zebulan, byalextran, mor10, kjellr, allancole, tdh, karmatosed, mapk, matt, andrewtaylor-1, ismailelkorchi, garrett-eclipse, gsayed786, dianeco, celloexpressions, aristath, nadir, cbravobernal, intimez, hometowntrailers, collet, littlebigthing, tobifjellner, kevinkovadia, jarretc.
See #48110.
Built from https://develop.svn.wordpress.org/trunk@46271
git-svn-id: http://core.svn.wordpress.org/trunk@46083 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-23 16:16:00 -04:00
|
|
|
*
|
|
|
|
* Allow `async` and `defer` while enqueuing Javascript.
|
|
|
|
*
|
Bundled Themes: Update Twenty Twenty.
This brings `trunk`’s version of Twenty Twenty in-sync with GitHub.
For a complete list of changes since [46271], see https://github.com/WordPress/twentytwenty/compare/932b16248...dd7032f
Props anlino, ianbelanger, nielslange, acosmin, netweb, williampatton, adhitya03, phpdocs, acalfieri, itowhid06, littlebigthing, aristath, karmatosed, poena.
See #48110.
Built from https://develop.svn.wordpress.org/trunk@46357
git-svn-id: http://core.svn.wordpress.org/trunk@46156 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-30 13:41:57 -04:00
|
|
|
* Based on a solution in WP Rig.
|
Bundled Themes: Import Twenty Twenty, the new default theme for WordPress 5.3.
Welcome to the bundled themes family!
Theme development to this point has taken place on GitHub. See: https://github.com/WordPress/twentytwenty/.
Props anlino, ianbelanger, audrasjb, nielslange, fabiankaegy, mukesh27, poena, joyously, emiluzelac, williampatton, dingo-d, dkarfa, acosmin, rabmalin, kafleg, jeffpaul, hareesh-pillai, burhandodhy, afercia, juanfra, soean, presskopp, justinahinon, jrf, netweb, garyj, pento, flixos90, vbaimas, zebulan, byalextran, mor10, kjellr, allancole, tdh, karmatosed, mapk, matt, andrewtaylor-1, ismailelkorchi, garrett-eclipse, gsayed786, dianeco, celloexpressions, aristath, nadir, cbravobernal, intimez, hometowntrailers, collet, littlebigthing, tobifjellner, kevinkovadia, jarretc.
See #48110.
Built from https://develop.svn.wordpress.org/trunk@46271
git-svn-id: http://core.svn.wordpress.org/trunk@46083 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-23 16:16:00 -04:00
|
|
|
*
|
|
|
|
* @package WordPress
|
|
|
|
* @subpackage Twenty_Twenty
|
2019-12-07 08:56:06 -05:00
|
|
|
* @since Twenty Twenty 1.0
|
Bundled Themes: Import Twenty Twenty, the new default theme for WordPress 5.3.
Welcome to the bundled themes family!
Theme development to this point has taken place on GitHub. See: https://github.com/WordPress/twentytwenty/.
Props anlino, ianbelanger, audrasjb, nielslange, fabiankaegy, mukesh27, poena, joyously, emiluzelac, williampatton, dingo-d, dkarfa, acosmin, rabmalin, kafleg, jeffpaul, hareesh-pillai, burhandodhy, afercia, juanfra, soean, presskopp, justinahinon, jrf, netweb, garyj, pento, flixos90, vbaimas, zebulan, byalextran, mor10, kjellr, allancole, tdh, karmatosed, mapk, matt, andrewtaylor-1, ismailelkorchi, garrett-eclipse, gsayed786, dianeco, celloexpressions, aristath, nadir, cbravobernal, intimez, hometowntrailers, collet, littlebigthing, tobifjellner, kevinkovadia, jarretc.
See #48110.
Built from https://develop.svn.wordpress.org/trunk@46271
git-svn-id: http://core.svn.wordpress.org/trunk@46083 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-23 16:16:00 -04:00
|
|
|
*/
|
|
|
|
|
Bundled Themes: Update Twenty Twenty.
This brings `trunk`’s version of Twenty Twenty in-sync with GitHub.
For a complete list of changes since [46271], see https://github.com/WordPress/twentytwenty/compare/932b16248...dd7032f
Props anlino, ianbelanger, nielslange, acosmin, netweb, williampatton, adhitya03, phpdocs, acalfieri, itowhid06, littlebigthing, aristath, karmatosed, poena.
See #48110.
Built from https://develop.svn.wordpress.org/trunk@46357
git-svn-id: http://core.svn.wordpress.org/trunk@46156 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-30 13:41:57 -04:00
|
|
|
if ( ! class_exists( 'TwentyTwenty_Script_Loader' ) ) {
|
Bundled Themes: Import Twenty Twenty, the new default theme for WordPress 5.3.
Welcome to the bundled themes family!
Theme development to this point has taken place on GitHub. See: https://github.com/WordPress/twentytwenty/.
Props anlino, ianbelanger, audrasjb, nielslange, fabiankaegy, mukesh27, poena, joyously, emiluzelac, williampatton, dingo-d, dkarfa, acosmin, rabmalin, kafleg, jeffpaul, hareesh-pillai, burhandodhy, afercia, juanfra, soean, presskopp, justinahinon, jrf, netweb, garyj, pento, flixos90, vbaimas, zebulan, byalextran, mor10, kjellr, allancole, tdh, karmatosed, mapk, matt, andrewtaylor-1, ismailelkorchi, garrett-eclipse, gsayed786, dianeco, celloexpressions, aristath, nadir, cbravobernal, intimez, hometowntrailers, collet, littlebigthing, tobifjellner, kevinkovadia, jarretc.
See #48110.
Built from https://develop.svn.wordpress.org/trunk@46271
git-svn-id: http://core.svn.wordpress.org/trunk@46083 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-23 16:16:00 -04:00
|
|
|
/**
|
Bundled Themes: Update Twenty Twenty.
This brings `trunk`’s version of Twenty Twenty in-sync with GitHub.
For a complete list of changes since [46271], see https://github.com/WordPress/twentytwenty/compare/932b16248...dd7032f
Props anlino, ianbelanger, nielslange, acosmin, netweb, williampatton, adhitya03, phpdocs, acalfieri, itowhid06, littlebigthing, aristath, karmatosed, poena.
See #48110.
Built from https://develop.svn.wordpress.org/trunk@46357
git-svn-id: http://core.svn.wordpress.org/trunk@46156 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-30 13:41:57 -04:00
|
|
|
* A class that provides a way to add `async` or `defer` attributes to scripts.
|
2021-07-03 05:14:58 -04:00
|
|
|
*
|
|
|
|
* @since Twenty Twenty 1.0
|
Bundled Themes: Import Twenty Twenty, the new default theme for WordPress 5.3.
Welcome to the bundled themes family!
Theme development to this point has taken place on GitHub. See: https://github.com/WordPress/twentytwenty/.
Props anlino, ianbelanger, audrasjb, nielslange, fabiankaegy, mukesh27, poena, joyously, emiluzelac, williampatton, dingo-d, dkarfa, acosmin, rabmalin, kafleg, jeffpaul, hareesh-pillai, burhandodhy, afercia, juanfra, soean, presskopp, justinahinon, jrf, netweb, garyj, pento, flixos90, vbaimas, zebulan, byalextran, mor10, kjellr, allancole, tdh, karmatosed, mapk, matt, andrewtaylor-1, ismailelkorchi, garrett-eclipse, gsayed786, dianeco, celloexpressions, aristath, nadir, cbravobernal, intimez, hometowntrailers, collet, littlebigthing, tobifjellner, kevinkovadia, jarretc.
See #48110.
Built from https://develop.svn.wordpress.org/trunk@46271
git-svn-id: http://core.svn.wordpress.org/trunk@46083 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-23 16:16:00 -04:00
|
|
|
*/
|
Bundled Themes: Update Twenty Twenty.
This brings `trunk`’s version of Twenty Twenty in-sync with GitHub.
For a complete list of changes since [46271], see https://github.com/WordPress/twentytwenty/compare/932b16248...dd7032f
Props anlino, ianbelanger, nielslange, acosmin, netweb, williampatton, adhitya03, phpdocs, acalfieri, itowhid06, littlebigthing, aristath, karmatosed, poena.
See #48110.
Built from https://develop.svn.wordpress.org/trunk@46357
git-svn-id: http://core.svn.wordpress.org/trunk@46156 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-30 13:41:57 -04:00
|
|
|
class TwentyTwenty_Script_Loader {
|
|
|
|
|
2023-09-11 20:06:19 -04:00
|
|
|
/**
|
|
|
|
* Migrates legacy async/defer script data which might be used by child themes.
|
|
|
|
*
|
|
|
|
* This method is used on the `print_scripts_array` filter.
|
|
|
|
*
|
|
|
|
* @since Twenty Twenty 2.0
|
|
|
|
*
|
|
|
|
* @param string[] $to_do An array of script dependency handles.
|
|
|
|
* @return string[] Unchanged array of script dependency handles.
|
|
|
|
*/
|
|
|
|
public function migrate_legacy_strategy_script_data( $to_do ) {
|
|
|
|
foreach ( $to_do as $handle ) {
|
|
|
|
foreach ( array( 'async', 'defer' ) as $strategy ) {
|
|
|
|
if ( wp_scripts()->get_data( $handle, $strategy ) ) {
|
|
|
|
wp_script_add_data( $handle, 'strategy', $strategy );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return $to_do;
|
|
|
|
}
|
|
|
|
|
Bundled Themes: Update Twenty Twenty.
This brings `trunk`’s version of Twenty Twenty in-sync with GitHub.
For a complete list of changes since [46271], see https://github.com/WordPress/twentytwenty/compare/932b16248...dd7032f
Props anlino, ianbelanger, nielslange, acosmin, netweb, williampatton, adhitya03, phpdocs, acalfieri, itowhid06, littlebigthing, aristath, karmatosed, poena.
See #48110.
Built from https://develop.svn.wordpress.org/trunk@46357
git-svn-id: http://core.svn.wordpress.org/trunk@46156 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-30 13:41:57 -04:00
|
|
|
/**
|
|
|
|
* Adds async/defer attributes to enqueued / registered scripts.
|
|
|
|
*
|
2023-09-11 20:06:19 -04:00
|
|
|
* Now that #12009 has landed in WordPress 6.3, this method is only used for older versions of WordPress.
|
|
|
|
* This method is used on the `script_loader_tag` filter.
|
Bundled Themes: Update Twenty Twenty.
This brings `trunk`’s version of Twenty Twenty in-sync with GitHub.
For a complete list of changes since [46271], see https://github.com/WordPress/twentytwenty/compare/932b16248...dd7032f
Props anlino, ianbelanger, nielslange, acosmin, netweb, williampatton, adhitya03, phpdocs, acalfieri, itowhid06, littlebigthing, aristath, karmatosed, poena.
See #48110.
Built from https://develop.svn.wordpress.org/trunk@46357
git-svn-id: http://core.svn.wordpress.org/trunk@46156 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-30 13:41:57 -04:00
|
|
|
*
|
2021-07-03 05:14:58 -04:00
|
|
|
* @since Twenty Twenty 1.0
|
|
|
|
*
|
Bundled Themes: Update Twenty Twenty.
This brings `trunk`’s version of Twenty Twenty in-sync with GitHub.
For a complete list of changes since [46271], see https://github.com/WordPress/twentytwenty/compare/932b16248...dd7032f
Props anlino, ianbelanger, nielslange, acosmin, netweb, williampatton, adhitya03, phpdocs, acalfieri, itowhid06, littlebigthing, aristath, karmatosed, poena.
See #48110.
Built from https://develop.svn.wordpress.org/trunk@46357
git-svn-id: http://core.svn.wordpress.org/trunk@46156 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-30 13:41:57 -04:00
|
|
|
* @link https://core.trac.wordpress.org/ticket/12009
|
|
|
|
*
|
|
|
|
* @param string $tag The script tag.
|
|
|
|
* @param string $handle The script handle.
|
|
|
|
* @return string Script HTML string.
|
|
|
|
*/
|
|
|
|
public function filter_script_loader_tag( $tag, $handle ) {
|
2023-09-11 20:06:19 -04:00
|
|
|
$strategies = array(
|
|
|
|
'async' => (bool) wp_scripts()->get_data( $handle, 'async' ),
|
|
|
|
'defer' => (bool) wp_scripts()->get_data( $handle, 'defer' ),
|
|
|
|
);
|
|
|
|
$strategy = wp_scripts()->get_data( $handle, 'strategy' );
|
|
|
|
if ( $strategy && isset( $strategies[ $strategy ] ) ) {
|
|
|
|
$strategies[ $strategy ] = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach ( array_keys( array_filter( $strategies ) ) as $attr ) {
|
|
|
|
|
Bundled Themes: Update Twenty Twenty.
This brings `trunk`’s version of Twenty Twenty in-sync with GitHub.
For a complete list of changes since [46271], see https://github.com/WordPress/twentytwenty/compare/932b16248...dd7032f
Props anlino, ianbelanger, nielslange, acosmin, netweb, williampatton, adhitya03, phpdocs, acalfieri, itowhid06, littlebigthing, aristath, karmatosed, poena.
See #48110.
Built from https://develop.svn.wordpress.org/trunk@46357
git-svn-id: http://core.svn.wordpress.org/trunk@46156 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-30 13:41:57 -04:00
|
|
|
// Prevent adding attribute when already added in #12009.
|
|
|
|
if ( ! preg_match( ":\s$attr(=|>|\s):", $tag ) ) {
|
|
|
|
$tag = preg_replace( ':(?=></script>):', " $attr", $tag, 1 );
|
|
|
|
}
|
|
|
|
// Only allow async or defer, not both.
|
|
|
|
break;
|
Bundled Themes: Import Twenty Twenty, the new default theme for WordPress 5.3.
Welcome to the bundled themes family!
Theme development to this point has taken place on GitHub. See: https://github.com/WordPress/twentytwenty/.
Props anlino, ianbelanger, audrasjb, nielslange, fabiankaegy, mukesh27, poena, joyously, emiluzelac, williampatton, dingo-d, dkarfa, acosmin, rabmalin, kafleg, jeffpaul, hareesh-pillai, burhandodhy, afercia, juanfra, soean, presskopp, justinahinon, jrf, netweb, garyj, pento, flixos90, vbaimas, zebulan, byalextran, mor10, kjellr, allancole, tdh, karmatosed, mapk, matt, andrewtaylor-1, ismailelkorchi, garrett-eclipse, gsayed786, dianeco, celloexpressions, aristath, nadir, cbravobernal, intimez, hometowntrailers, collet, littlebigthing, tobifjellner, kevinkovadia, jarretc.
See #48110.
Built from https://develop.svn.wordpress.org/trunk@46271
git-svn-id: http://core.svn.wordpress.org/trunk@46083 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-23 16:16:00 -04:00
|
|
|
}
|
Bundled Themes: Update Twenty Twenty.
This brings `trunk`’s version of Twenty Twenty in-sync with GitHub.
For a complete list of changes since [46271], see https://github.com/WordPress/twentytwenty/compare/932b16248...dd7032f
Props anlino, ianbelanger, nielslange, acosmin, netweb, williampatton, adhitya03, phpdocs, acalfieri, itowhid06, littlebigthing, aristath, karmatosed, poena.
See #48110.
Built from https://develop.svn.wordpress.org/trunk@46357
git-svn-id: http://core.svn.wordpress.org/trunk@46156 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-30 13:41:57 -04:00
|
|
|
return $tag;
|
Bundled Themes: Import Twenty Twenty, the new default theme for WordPress 5.3.
Welcome to the bundled themes family!
Theme development to this point has taken place on GitHub. See: https://github.com/WordPress/twentytwenty/.
Props anlino, ianbelanger, audrasjb, nielslange, fabiankaegy, mukesh27, poena, joyously, emiluzelac, williampatton, dingo-d, dkarfa, acosmin, rabmalin, kafleg, jeffpaul, hareesh-pillai, burhandodhy, afercia, juanfra, soean, presskopp, justinahinon, jrf, netweb, garyj, pento, flixos90, vbaimas, zebulan, byalextran, mor10, kjellr, allancole, tdh, karmatosed, mapk, matt, andrewtaylor-1, ismailelkorchi, garrett-eclipse, gsayed786, dianeco, celloexpressions, aristath, nadir, cbravobernal, intimez, hometowntrailers, collet, littlebigthing, tobifjellner, kevinkovadia, jarretc.
See #48110.
Built from https://develop.svn.wordpress.org/trunk@46271
git-svn-id: http://core.svn.wordpress.org/trunk@46083 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-23 16:16:00 -04:00
|
|
|
}
|
Bundled Themes: Update Twenty Twenty.
This brings `trunk`’s version of Twenty Twenty in-sync with GitHub.
For a complete list of changes since [46271], see https://github.com/WordPress/twentytwenty/compare/932b16248...dd7032f
Props anlino, ianbelanger, nielslange, acosmin, netweb, williampatton, adhitya03, phpdocs, acalfieri, itowhid06, littlebigthing, aristath, karmatosed, poena.
See #48110.
Built from https://develop.svn.wordpress.org/trunk@46357
git-svn-id: http://core.svn.wordpress.org/trunk@46156 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-30 13:41:57 -04:00
|
|
|
}
|
Bundled Themes: Import Twenty Twenty, the new default theme for WordPress 5.3.
Welcome to the bundled themes family!
Theme development to this point has taken place on GitHub. See: https://github.com/WordPress/twentytwenty/.
Props anlino, ianbelanger, audrasjb, nielslange, fabiankaegy, mukesh27, poena, joyously, emiluzelac, williampatton, dingo-d, dkarfa, acosmin, rabmalin, kafleg, jeffpaul, hareesh-pillai, burhandodhy, afercia, juanfra, soean, presskopp, justinahinon, jrf, netweb, garyj, pento, flixos90, vbaimas, zebulan, byalextran, mor10, kjellr, allancole, tdh, karmatosed, mapk, matt, andrewtaylor-1, ismailelkorchi, garrett-eclipse, gsayed786, dianeco, celloexpressions, aristath, nadir, cbravobernal, intimez, hometowntrailers, collet, littlebigthing, tobifjellner, kevinkovadia, jarretc.
See #48110.
Built from https://develop.svn.wordpress.org/trunk@46271
git-svn-id: http://core.svn.wordpress.org/trunk@46083 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-23 16:16:00 -04:00
|
|
|
}
|