2008-05-21 07:56:04 +02:00
|
|
|
<?php
|
2008-09-27 12:06:18 +02:00
|
|
|
/**
|
2016-02-27 21:34:29 +01:00
|
|
|
* Dependencies API: WP_Scripts class
|
2008-09-27 12:06:18 +02:00
|
|
|
*
|
2016-02-27 21:34:29 +01:00
|
|
|
* @since 2.6.0
|
2008-09-27 12:06:18 +02:00
|
|
|
*
|
2016-02-27 21:34:29 +01:00
|
|
|
* @package WordPress
|
|
|
|
|
* @subpackage Dependencies
|
2008-09-27 12:06:18 +02:00
|
|
|
*/
|
2008-05-21 07:56:04 +02:00
|
|
|
|
2008-09-27 12:06:18 +02:00
|
|
|
/**
|
2016-02-27 21:34:29 +01:00
|
|
|
* Core class used to register scripts.
|
2008-09-27 12:06:18 +02:00
|
|
|
*
|
2016-02-27 21:34:29 +01:00
|
|
|
* @since 2.1.0
|
2017-07-01 18:58:42 +02:00
|
|
|
*
|
|
|
|
|
* @see WP_Dependencies
|
2008-09-27 12:06:18 +02:00
|
|
|
*/
|
2008-05-21 07:56:04 +02:00
|
|
|
class WP_Scripts extends WP_Dependencies {
|
2016-02-26 14:05:26 +01:00
|
|
|
/**
|
|
|
|
|
* Base URL for scripts.
|
|
|
|
|
*
|
|
|
|
|
* Full URL with trailing slash.
|
|
|
|
|
*
|
|
|
|
|
* @since 2.6.0
|
|
|
|
|
* @var string
|
|
|
|
|
*/
|
|
|
|
|
public $base_url;
|
|
|
|
|
|
|
|
|
|
/**
|
2016-02-27 21:34:29 +01:00
|
|
|
* URL of the content directory.
|
2016-02-26 14:05:26 +01:00
|
|
|
*
|
|
|
|
|
* @since 2.8.0
|
|
|
|
|
* @var string
|
|
|
|
|
*/
|
2014-05-19 08:17:14 +02:00
|
|
|
public $content_url;
|
2016-02-26 14:05:26 +01:00
|
|
|
|
|
|
|
|
/**
|
2018-08-11 17:09:24 +02:00
|
|
|
* Default version string for scripts.
|
2016-02-26 14:05:26 +01:00
|
|
|
*
|
|
|
|
|
* @since 2.6.0
|
|
|
|
|
* @var string
|
|
|
|
|
*/
|
2014-05-19 08:17:14 +02:00
|
|
|
public $default_version;
|
2016-02-26 14:05:26 +01:00
|
|
|
|
|
|
|
|
/**
|
2016-02-27 21:34:29 +01:00
|
|
|
* Holds handles of scripts which are enqueued in footer.
|
2016-02-26 14:05:26 +01:00
|
|
|
*
|
|
|
|
|
* @since 2.8.0
|
|
|
|
|
* @var array
|
|
|
|
|
*/
|
2014-05-19 08:17:14 +02:00
|
|
|
public $in_footer = array();
|
2016-02-26 14:05:26 +01:00
|
|
|
|
|
|
|
|
/**
|
2016-02-27 21:34:29 +01:00
|
|
|
* Holds a list of script handles which will be concatenated.
|
2016-02-26 14:05:26 +01:00
|
|
|
*
|
|
|
|
|
* @since 2.8.0
|
|
|
|
|
* @var string
|
|
|
|
|
*/
|
2014-05-19 08:17:14 +02:00
|
|
|
public $concat = '';
|
2016-02-26 14:05:26 +01:00
|
|
|
|
|
|
|
|
/**
|
2016-02-27 21:34:29 +01:00
|
|
|
* Holds a string which contains script handles and their version.
|
2016-02-26 14:05:26 +01:00
|
|
|
*
|
|
|
|
|
* @since 2.8.0
|
2016-02-27 21:34:29 +01:00
|
|
|
* @deprecated 3.4.0
|
2016-02-26 14:05:26 +01:00
|
|
|
* @var string
|
|
|
|
|
*/
|
2014-05-19 08:17:14 +02:00
|
|
|
public $concat_version = '';
|
2016-02-26 14:05:26 +01:00
|
|
|
|
|
|
|
|
/**
|
2016-02-27 21:34:29 +01:00
|
|
|
* Whether to perform concatenation.
|
2016-02-26 14:05:26 +01:00
|
|
|
*
|
|
|
|
|
* @since 2.8.0
|
|
|
|
|
* @var bool
|
|
|
|
|
*/
|
2014-05-19 08:17:14 +02:00
|
|
|
public $do_concat = false;
|
2016-02-26 14:05:26 +01:00
|
|
|
|
|
|
|
|
/**
|
2016-02-27 21:34:29 +01:00
|
|
|
* Holds HTML markup of scripts and additional data if concatenation
|
|
|
|
|
* is enabled.
|
2016-02-26 14:05:26 +01:00
|
|
|
*
|
|
|
|
|
* @since 2.8.0
|
|
|
|
|
* @var string
|
|
|
|
|
*/
|
2014-05-19 08:17:14 +02:00
|
|
|
public $print_html = '';
|
2016-02-26 14:05:26 +01:00
|
|
|
|
|
|
|
|
/**
|
2016-02-27 21:34:29 +01:00
|
|
|
* Holds inline code if concatenation is enabled.
|
2016-02-26 14:05:26 +01:00
|
|
|
*
|
|
|
|
|
* @since 2.8.0
|
|
|
|
|
* @var string
|
|
|
|
|
*/
|
2014-05-19 08:17:14 +02:00
|
|
|
public $print_code = '';
|
2016-02-26 14:05:26 +01:00
|
|
|
|
|
|
|
|
/**
|
2016-02-27 21:34:29 +01:00
|
|
|
* Holds a list of script handles which are not in the default directory
|
|
|
|
|
* if concatenation is enabled.
|
|
|
|
|
*
|
|
|
|
|
* Unused in core.
|
2016-02-26 14:05:26 +01:00
|
|
|
*
|
|
|
|
|
* @since 2.8.0
|
|
|
|
|
* @var string
|
|
|
|
|
*/
|
2014-05-19 08:17:14 +02:00
|
|
|
public $ext_handles = '';
|
2016-02-26 14:05:26 +01:00
|
|
|
|
|
|
|
|
/**
|
2016-02-27 21:34:29 +01:00
|
|
|
* Holds a string which contains handles and versions of scripts which
|
|
|
|
|
* are not in the default directory if concatenation is enabled.
|
|
|
|
|
*
|
|
|
|
|
* Unused in core.
|
2016-02-26 14:05:26 +01:00
|
|
|
*
|
|
|
|
|
* @since 2.8.0
|
|
|
|
|
* @var string
|
|
|
|
|
*/
|
2014-05-19 08:17:14 +02:00
|
|
|
public $ext_version = '';
|
2016-02-26 14:05:26 +01:00
|
|
|
|
|
|
|
|
/**
|
2016-02-27 21:34:29 +01:00
|
|
|
* List of default directories.
|
2016-02-26 14:05:26 +01:00
|
|
|
*
|
|
|
|
|
* @since 2.8.0
|
|
|
|
|
* @var array
|
|
|
|
|
*/
|
2014-05-19 08:17:14 +02:00
|
|
|
public $default_dirs;
|
|
|
|
|
|
2019-09-18 16:50:56 +02:00
|
|
|
/**
|
|
|
|
|
* Holds a string which contains the type attribute for script tag.
|
|
|
|
|
*
|
2022-01-21 00:53:05 +01:00
|
|
|
* If the active theme does not declare HTML5 support for 'script',
|
2019-09-18 16:50:56 +02:00
|
|
|
* then it initializes as `type='text/javascript'`.
|
|
|
|
|
*
|
|
|
|
|
* @since 5.3.0
|
|
|
|
|
* @var string
|
|
|
|
|
*/
|
|
|
|
|
private $type_attr = '';
|
|
|
|
|
|
2015-12-16 18:48:27 +01:00
|
|
|
/**
|
|
|
|
|
* Constructor.
|
|
|
|
|
*
|
|
|
|
|
* @since 2.6.0
|
|
|
|
|
*/
|
2014-05-19 08:17:14 +02:00
|
|
|
public function __construct() {
|
2012-06-26 07:33:19 +02:00
|
|
|
$this->init();
|
|
|
|
|
add_action( 'init', array( $this, 'init' ), 0 );
|
2012-02-08 16:29:24 +01:00
|
|
|
}
|
|
|
|
|
|
2015-05-29 23:37:24 +02:00
|
|
|
/**
|
2015-12-16 18:48:27 +01:00
|
|
|
* Initialize the class.
|
|
|
|
|
*
|
|
|
|
|
* @since 3.4.0
|
2015-05-29 23:37:24 +02:00
|
|
|
*/
|
2014-05-19 08:17:14 +02:00
|
|
|
public function init() {
|
2019-09-24 04:56:57 +02:00
|
|
|
if (
|
|
|
|
|
function_exists( 'is_admin' ) && ! is_admin()
|
|
|
|
|
&&
|
|
|
|
|
function_exists( 'current_theme_supports' ) && ! current_theme_supports( 'html5', 'script' )
|
|
|
|
|
) {
|
2019-09-19 00:42:55 +02:00
|
|
|
$this->type_attr = " type='text/javascript'";
|
|
|
|
|
}
|
|
|
|
|
|
2014-03-26 06:48:14 +01:00
|
|
|
/**
|
|
|
|
|
* Fires when the WP_Scripts instance is initialized.
|
|
|
|
|
*
|
|
|
|
|
* @since 2.6.0
|
|
|
|
|
*
|
2021-07-30 21:35:58 +02:00
|
|
|
* @param WP_Scripts $wp_scripts WP_Scripts instance (passed by reference).
|
2014-03-26 06:48:14 +01:00
|
|
|
*/
|
2017-12-01 00:11:00 +01:00
|
|
|
do_action_ref_array( 'wp_default_scripts', array( &$this ) );
|
2008-05-21 07:56:04 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2014-12-06 22:24:45 +01:00
|
|
|
* Prints scripts.
|
2008-05-21 07:56:04 +02:00
|
|
|
*
|
2011-12-14 00:45:31 +01:00
|
|
|
* Prints the scripts passed to it or the print queue. Also prints all necessary dependencies.
|
2008-05-21 07:56:04 +02:00
|
|
|
*
|
2016-02-26 14:05:26 +01:00
|
|
|
* @since 2.1.0
|
|
|
|
|
* @since 2.8.0 Added the `$group` parameter.
|
|
|
|
|
*
|
2020-02-03 01:19:03 +01:00
|
|
|
* @param string|string[]|false $handles Optional. Scripts to be printed: queue (false),
|
|
|
|
|
* single script (string), or multiple scripts (array of strings).
|
|
|
|
|
* Default false.
|
|
|
|
|
* @param int|false $group Optional. Group level: level (int), no groups (false).
|
|
|
|
|
* Default false.
|
2019-11-05 22:27:02 +01:00
|
|
|
* @return string[] Handles of scripts that have been printed.
|
2008-05-21 07:56:04 +02:00
|
|
|
*/
|
2014-05-19 08:17:14 +02:00
|
|
|
public function print_scripts( $handles = false, $group = false ) {
|
2009-01-14 15:18:51 +01:00
|
|
|
return $this->do_items( $handles, $group );
|
2008-05-21 07:56:04 +02:00
|
|
|
}
|
|
|
|
|
|
2015-05-24 07:05:26 +02:00
|
|
|
/**
|
2016-02-27 21:34:29 +01:00
|
|
|
* Prints extra scripts of a registered script.
|
2016-02-26 14:05:26 +01:00
|
|
|
*
|
|
|
|
|
* @since 2.1.0
|
Code Modernization: Rename parameters that use reserved keywords in `wp-includes/class.wp-scripts.php`.
While using reserved PHP keywords as parameter name labels is allowed, in the context of function calls using named parameters in PHP 8.0+, this will easily lead to confusion. To avoid that, it is recommended not to use reserved keywords as function parameter names.
This commit renames the `$echo` parameter to `$display` in `WP_Scripts` class methods.
Follow-up to [52946], [52996], [52997], [52998], [53003], [53014], [53029], [53039], [53116], [53117], [53137], [53174], [53184], [53185], [53192], [53193], [53198], [53203], [53207], [53215], [53216], [53220], [53230], [53232], [53236], [53239], [53240], [53242], [53243], [53245], [53246], [53257], [53269], [53270], [53271], [53272], [53273], [53274], [53275], [53276], [53277], [53281].
Props jrf, aristath, poena, justinahinon, SergeyBiryukov.
See #55327.
Built from https://develop.svn.wordpress.org/trunk@53283
git-svn-id: http://core.svn.wordpress.org/trunk@52872 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-26 16:56:08 +02:00
|
|
|
* @since 2.8.0 Added the `$display` parameter.
|
2016-02-26 14:05:26 +01:00
|
|
|
* @deprecated 3.3.0
|
|
|
|
|
*
|
2015-05-24 07:05:26 +02:00
|
|
|
* @see print_extra_script()
|
|
|
|
|
*
|
Code Modernization: Rename parameters that use reserved keywords in `wp-includes/class.wp-scripts.php`.
While using reserved PHP keywords as parameter name labels is allowed, in the context of function calls using named parameters in PHP 8.0+, this will easily lead to confusion. To avoid that, it is recommended not to use reserved keywords as function parameter names.
This commit renames the `$echo` parameter to `$display` in `WP_Scripts` class methods.
Follow-up to [52946], [52996], [52997], [52998], [53003], [53014], [53029], [53039], [53116], [53117], [53137], [53174], [53184], [53185], [53192], [53193], [53198], [53203], [53207], [53215], [53216], [53220], [53230], [53232], [53236], [53239], [53240], [53242], [53243], [53245], [53246], [53257], [53269], [53270], [53271], [53272], [53273], [53274], [53275], [53276], [53277], [53281].
Props jrf, aristath, poena, justinahinon, SergeyBiryukov.
See #55327.
Built from https://develop.svn.wordpress.org/trunk@53283
git-svn-id: http://core.svn.wordpress.org/trunk@52872 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-26 16:56:08 +02:00
|
|
|
* @param string $handle The script's registered handle.
|
|
|
|
|
* @param bool $display Optional. Whether to print the extra script
|
|
|
|
|
* instead of just returning it. Default true.
|
|
|
|
|
* @return bool|string|void Void if no data exists, extra scripts if `$display` is true,
|
2020-02-03 01:19:03 +01:00
|
|
|
* true otherwise.
|
2015-05-24 07:05:26 +02:00
|
|
|
*/
|
Code Modernization: Rename parameters that use reserved keywords in `wp-includes/class.wp-scripts.php`.
While using reserved PHP keywords as parameter name labels is allowed, in the context of function calls using named parameters in PHP 8.0+, this will easily lead to confusion. To avoid that, it is recommended not to use reserved keywords as function parameter names.
This commit renames the `$echo` parameter to `$display` in `WP_Scripts` class methods.
Follow-up to [52946], [52996], [52997], [52998], [53003], [53014], [53029], [53039], [53116], [53117], [53137], [53174], [53184], [53185], [53192], [53193], [53198], [53203], [53207], [53215], [53216], [53220], [53230], [53232], [53236], [53239], [53240], [53242], [53243], [53245], [53246], [53257], [53269], [53270], [53271], [53272], [53273], [53274], [53275], [53276], [53277], [53281].
Props jrf, aristath, poena, justinahinon, SergeyBiryukov.
See #55327.
Built from https://develop.svn.wordpress.org/trunk@53283
git-svn-id: http://core.svn.wordpress.org/trunk@52872 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-26 16:56:08 +02:00
|
|
|
public function print_scripts_l10n( $handle, $display = true ) {
|
2017-06-25 09:20:41 +02:00
|
|
|
_deprecated_function( __FUNCTION__, '3.3.0', 'WP_Scripts::print_extra_script()' );
|
Code Modernization: Rename parameters that use reserved keywords in `wp-includes/class.wp-scripts.php`.
While using reserved PHP keywords as parameter name labels is allowed, in the context of function calls using named parameters in PHP 8.0+, this will easily lead to confusion. To avoid that, it is recommended not to use reserved keywords as function parameter names.
This commit renames the `$echo` parameter to `$display` in `WP_Scripts` class methods.
Follow-up to [52946], [52996], [52997], [52998], [53003], [53014], [53029], [53039], [53116], [53117], [53137], [53174], [53184], [53185], [53192], [53193], [53198], [53203], [53207], [53215], [53216], [53220], [53230], [53232], [53236], [53239], [53240], [53242], [53243], [53245], [53246], [53257], [53269], [53270], [53271], [53272], [53273], [53274], [53275], [53276], [53277], [53281].
Props jrf, aristath, poena, justinahinon, SergeyBiryukov.
See #55327.
Built from https://develop.svn.wordpress.org/trunk@53283
git-svn-id: http://core.svn.wordpress.org/trunk@52872 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-26 16:56:08 +02:00
|
|
|
return $this->print_extra_script( $handle, $display );
|
2011-07-25 02:36:06 +02:00
|
|
|
}
|
|
|
|
|
|
2015-05-24 07:05:26 +02:00
|
|
|
/**
|
2016-02-27 21:34:29 +01:00
|
|
|
* Prints extra scripts of a registered script.
|
2016-02-26 14:05:26 +01:00
|
|
|
*
|
|
|
|
|
* @since 3.3.0
|
|
|
|
|
*
|
Code Modernization: Rename parameters that use reserved keywords in `wp-includes/class.wp-scripts.php`.
While using reserved PHP keywords as parameter name labels is allowed, in the context of function calls using named parameters in PHP 8.0+, this will easily lead to confusion. To avoid that, it is recommended not to use reserved keywords as function parameter names.
This commit renames the `$echo` parameter to `$display` in `WP_Scripts` class methods.
Follow-up to [52946], [52996], [52997], [52998], [53003], [53014], [53029], [53039], [53116], [53117], [53137], [53174], [53184], [53185], [53192], [53193], [53198], [53203], [53207], [53215], [53216], [53220], [53230], [53232], [53236], [53239], [53240], [53242], [53243], [53245], [53246], [53257], [53269], [53270], [53271], [53272], [53273], [53274], [53275], [53276], [53277], [53281].
Props jrf, aristath, poena, justinahinon, SergeyBiryukov.
See #55327.
Built from https://develop.svn.wordpress.org/trunk@53283
git-svn-id: http://core.svn.wordpress.org/trunk@52872 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-26 16:56:08 +02:00
|
|
|
* @param string $handle The script's registered handle.
|
|
|
|
|
* @param bool $display Optional. Whether to print the extra script
|
|
|
|
|
* instead of just returning it. Default true.
|
|
|
|
|
* @return bool|string|void Void if no data exists, extra scripts if `$display` is true,
|
2020-02-03 01:19:03 +01:00
|
|
|
* true otherwise.
|
2015-05-24 07:05:26 +02:00
|
|
|
*/
|
Code Modernization: Rename parameters that use reserved keywords in `wp-includes/class.wp-scripts.php`.
While using reserved PHP keywords as parameter name labels is allowed, in the context of function calls using named parameters in PHP 8.0+, this will easily lead to confusion. To avoid that, it is recommended not to use reserved keywords as function parameter names.
This commit renames the `$echo` parameter to `$display` in `WP_Scripts` class methods.
Follow-up to [52946], [52996], [52997], [52998], [53003], [53014], [53029], [53039], [53116], [53117], [53137], [53174], [53184], [53185], [53192], [53193], [53198], [53203], [53207], [53215], [53216], [53220], [53230], [53232], [53236], [53239], [53240], [53242], [53243], [53245], [53246], [53257], [53269], [53270], [53271], [53272], [53273], [53274], [53275], [53276], [53277], [53281].
Props jrf, aristath, poena, justinahinon, SergeyBiryukov.
See #55327.
Built from https://develop.svn.wordpress.org/trunk@53283
git-svn-id: http://core.svn.wordpress.org/trunk@52872 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-26 16:56:08 +02:00
|
|
|
public function print_extra_script( $handle, $display = true ) {
|
2019-07-03 01:42:58 +02:00
|
|
|
$output = $this->get_data( $handle, 'data' );
|
|
|
|
|
if ( ! $output ) {
|
2011-11-08 19:05:59 +01:00
|
|
|
return;
|
2017-12-01 00:11:00 +01:00
|
|
|
}
|
2011-07-25 02:36:06 +02:00
|
|
|
|
Code Modernization: Rename parameters that use reserved keywords in `wp-includes/class.wp-scripts.php`.
While using reserved PHP keywords as parameter name labels is allowed, in the context of function calls using named parameters in PHP 8.0+, this will easily lead to confusion. To avoid that, it is recommended not to use reserved keywords as function parameter names.
This commit renames the `$echo` parameter to `$display` in `WP_Scripts` class methods.
Follow-up to [52946], [52996], [52997], [52998], [53003], [53014], [53029], [53039], [53116], [53117], [53137], [53174], [53184], [53185], [53192], [53193], [53198], [53203], [53207], [53215], [53216], [53220], [53230], [53232], [53236], [53239], [53240], [53242], [53243], [53245], [53246], [53257], [53269], [53270], [53271], [53272], [53273], [53274], [53275], [53276], [53277], [53281].
Props jrf, aristath, poena, justinahinon, SergeyBiryukov.
See #55327.
Built from https://develop.svn.wordpress.org/trunk@53283
git-svn-id: http://core.svn.wordpress.org/trunk@52872 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-26 16:56:08 +02:00
|
|
|
if ( ! $display ) {
|
2011-07-25 02:36:06 +02:00
|
|
|
return $output;
|
2017-12-01 00:11:00 +01:00
|
|
|
}
|
2011-07-25 02:36:06 +02:00
|
|
|
|
2020-07-04 18:54:02 +02:00
|
|
|
printf( "<script%s id='%s-js-extra'>\n", $this->type_attr, esc_attr( $handle ) );
|
2019-09-24 04:56:57 +02:00
|
|
|
|
|
|
|
|
// CDATA is not needed for HTML 5.
|
|
|
|
|
if ( $this->type_attr ) {
|
|
|
|
|
echo "/* <![CDATA[ */\n";
|
|
|
|
|
}
|
|
|
|
|
|
2011-11-08 19:05:59 +01:00
|
|
|
echo "$output\n";
|
2019-09-24 04:56:57 +02:00
|
|
|
|
|
|
|
|
if ( $this->type_attr ) {
|
|
|
|
|
echo "/* ]]> */\n";
|
|
|
|
|
}
|
|
|
|
|
|
2011-08-03 12:19:00 +02:00
|
|
|
echo "</script>\n";
|
2011-07-25 02:36:06 +02:00
|
|
|
|
|
|
|
|
return true;
|
2008-05-21 07:56:04 +02:00
|
|
|
}
|
|
|
|
|
|
2015-05-24 07:05:26 +02:00
|
|
|
/**
|
2016-02-27 21:34:29 +01:00
|
|
|
* Processes a script dependency.
|
2016-02-26 14:05:26 +01:00
|
|
|
*
|
|
|
|
|
* @since 2.6.0
|
|
|
|
|
* @since 2.8.0 Added the `$group` parameter.
|
|
|
|
|
*
|
2016-02-27 21:34:29 +01:00
|
|
|
* @see WP_Dependencies::do_item()
|
|
|
|
|
*
|
2018-08-27 16:34:24 +02:00
|
|
|
* @param string $handle The script's registered handle.
|
2020-02-03 01:19:03 +01:00
|
|
|
* @param int|false $group Optional. Group level: level (int), no groups (false).
|
|
|
|
|
* Default false.
|
2016-02-27 21:34:29 +01:00
|
|
|
* @return bool True on success, false on failure.
|
2015-05-24 07:05:26 +02:00
|
|
|
*/
|
2014-05-19 08:17:14 +02:00
|
|
|
public function do_item( $handle, $group = false ) {
|
2017-12-01 00:11:00 +01:00
|
|
|
if ( ! parent::do_item( $handle ) ) {
|
2008-05-21 07:56:04 +02:00
|
|
|
return false;
|
2017-12-01 00:11:00 +01:00
|
|
|
}
|
2008-05-21 07:56:04 +02:00
|
|
|
|
2017-12-01 00:11:00 +01:00
|
|
|
if ( 0 === $group && $this->groups[ $handle ] > 0 ) {
|
2009-01-14 15:18:51 +01:00
|
|
|
$this->in_footer[] = $handle;
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-01 00:11:00 +01:00
|
|
|
if ( false === $group && in_array( $handle, $this->in_footer, true ) ) {
|
2009-01-14 15:18:51 +01:00
|
|
|
$this->in_footer = array_diff( $this->in_footer, (array) $handle );
|
2017-12-01 00:11:00 +01:00
|
|
|
}
|
2009-01-14 15:18:51 +01:00
|
|
|
|
2017-12-01 00:11:00 +01:00
|
|
|
$obj = $this->registered[ $handle ];
|
2015-01-17 02:37:22 +01:00
|
|
|
|
|
|
|
|
if ( null === $obj->ver ) {
|
2009-12-28 01:48:20 +01:00
|
|
|
$ver = '';
|
2015-01-17 02:37:22 +01:00
|
|
|
} else {
|
|
|
|
|
$ver = $obj->ver ? $obj->ver : $this->default_version;
|
|
|
|
|
}
|
2009-12-28 01:48:20 +01:00
|
|
|
|
2017-12-01 00:11:00 +01:00
|
|
|
if ( isset( $this->args[ $handle ] ) ) {
|
|
|
|
|
$ver = $ver ? $ver . '&' . $this->args[ $handle ] : $this->args[ $handle ];
|
|
|
|
|
}
|
2008-05-21 07:56:04 +02:00
|
|
|
|
2017-12-01 00:11:00 +01:00
|
|
|
$src = $obj->src;
|
2019-07-03 01:42:58 +02:00
|
|
|
$cond_before = '';
|
|
|
|
|
$cond_after = '';
|
2015-01-17 02:37:22 +01:00
|
|
|
$conditional = isset( $obj->extra['conditional'] ) ? $obj->extra['conditional'] : '';
|
|
|
|
|
|
|
|
|
|
if ( $conditional ) {
|
|
|
|
|
$cond_before = "<!--[if {$conditional}]>\n";
|
2017-12-01 00:11:00 +01:00
|
|
|
$cond_after = "<![endif]-->\n";
|
2015-01-17 02:37:22 +01:00
|
|
|
}
|
2009-01-14 15:18:51 +01:00
|
|
|
|
2016-02-23 17:44:26 +01:00
|
|
|
$before_handle = $this->print_inline_script( $handle, 'before', false );
|
2017-12-01 00:11:00 +01:00
|
|
|
$after_handle = $this->print_inline_script( $handle, 'after', false );
|
2016-02-23 17:44:26 +01:00
|
|
|
|
|
|
|
|
if ( $before_handle ) {
|
2020-07-04 18:54:02 +02:00
|
|
|
$before_handle = sprintf( "<script%s id='%s-js-before'>\n%s\n</script>\n", $this->type_attr, esc_attr( $handle ), $before_handle );
|
2016-02-23 17:44:26 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( $after_handle ) {
|
2020-07-04 18:54:02 +02:00
|
|
|
$after_handle = sprintf( "<script%s id='%s-js-after'>\n%s\n</script>\n", $this->type_attr, esc_attr( $handle ), $after_handle );
|
2016-02-23 17:44:26 +01:00
|
|
|
}
|
|
|
|
|
|
2018-08-11 19:42:49 +02:00
|
|
|
if ( $before_handle || $after_handle ) {
|
2019-09-18 16:50:56 +02:00
|
|
|
$inline_script_tag = $cond_before . $before_handle . $after_handle . $cond_after;
|
2018-08-11 19:42:49 +02:00
|
|
|
} else {
|
|
|
|
|
$inline_script_tag = '';
|
|
|
|
|
}
|
|
|
|
|
|
Script Loader: Fix i18n edge case breaking dependencies.
Prevent concatenation of scripts if the text domain is defined to ensure the dependency order is respected.
This accounts for an edge case in which replacing a core script via a plugin and a lack of translations (eg, for a US English site) could cause the JavaScript files to be ordered incorrectly.
Follow up to [52937].
Props audrasjb, boniu91, chaion07, costdev, hellofromtonya, jsnajdr, mukesh27, ndiego, ugyensupport, SergeyBiryukov.
Merges [53360,53366] to the 6.0 branch.
Fixes #55628.
Built from https://develop.svn.wordpress.org/branches/6.0@53367
git-svn-id: http://core.svn.wordpress.org/branches/6.0@52956 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-05-09 02:03:18 +02:00
|
|
|
/*
|
|
|
|
|
* Prevent concatenation of scripts if the text domain is defined
|
|
|
|
|
* to ensure the dependency order is respected.
|
|
|
|
|
*/
|
|
|
|
|
$translations_stop_concat = ! empty( $obj->textdomain );
|
|
|
|
|
|
2020-08-27 23:58:04 +02:00
|
|
|
$translations = $this->print_translations( $handle, false );
|
|
|
|
|
if ( $translations ) {
|
|
|
|
|
$translations = sprintf( "<script%s id='%s-js-translations'>\n%s\n</script>\n", $this->type_attr, esc_attr( $handle ), $translations );
|
|
|
|
|
}
|
|
|
|
|
|
2009-01-14 15:18:51 +01:00
|
|
|
if ( $this->do_concat ) {
|
2014-03-26 06:48:14 +01:00
|
|
|
/**
|
2016-05-22 20:50:28 +02:00
|
|
|
* Filters the script loader source.
|
2014-03-26 06:48:14 +01:00
|
|
|
*
|
|
|
|
|
* @since 2.2.0
|
|
|
|
|
*
|
|
|
|
|
* @param string $src Script loader source path.
|
|
|
|
|
* @param string $handle Script handle.
|
|
|
|
|
*/
|
2009-01-14 15:40:08 +01:00
|
|
|
$srce = apply_filters( 'script_loader_src', $src, $handle );
|
2016-02-23 17:44:26 +01:00
|
|
|
|
Script Loader: Fix i18n edge case breaking dependencies.
Prevent concatenation of scripts if the text domain is defined to ensure the dependency order is respected.
This accounts for an edge case in which replacing a core script via a plugin and a lack of translations (eg, for a US English site) could cause the JavaScript files to be ordered incorrectly.
Follow up to [52937].
Props audrasjb, boniu91, chaion07, costdev, hellofromtonya, jsnajdr, mukesh27, ndiego, ugyensupport, SergeyBiryukov.
Merges [53360,53366] to the 6.0 branch.
Fixes #55628.
Built from https://develop.svn.wordpress.org/branches/6.0@53367
git-svn-id: http://core.svn.wordpress.org/branches/6.0@52956 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-05-09 02:03:18 +02:00
|
|
|
if ( $this->in_default_dir( $srce ) && ( $before_handle || $after_handle || $translations_stop_concat ) ) {
|
2016-04-10 05:33:26 +02:00
|
|
|
$this->do_concat = false;
|
2016-02-23 17:44:26 +01:00
|
|
|
|
2016-04-10 05:33:26 +02:00
|
|
|
// Have to print the so-far concatenated scripts right away to maintain the right order.
|
|
|
|
|
_print_scripts();
|
|
|
|
|
$this->reset();
|
|
|
|
|
} elseif ( $this->in_default_dir( $srce ) && ! $conditional ) {
|
2017-12-01 00:11:00 +01:00
|
|
|
$this->print_code .= $this->print_extra_script( $handle, false );
|
|
|
|
|
$this->concat .= "$handle,";
|
2009-01-26 13:59:10 +01:00
|
|
|
$this->concat_version .= "$handle$ver";
|
2009-01-14 15:18:51 +01:00
|
|
|
return true;
|
2009-01-26 13:59:10 +01:00
|
|
|
} else {
|
|
|
|
|
$this->ext_handles .= "$handle,";
|
|
|
|
|
$this->ext_version .= "$handle$ver";
|
2009-01-14 15:18:51 +01:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2015-01-17 02:37:22 +01:00
|
|
|
$has_conditional_data = $conditional && $this->get_data( $handle, 'data' );
|
|
|
|
|
|
|
|
|
|
if ( $has_conditional_data ) {
|
|
|
|
|
echo $cond_before;
|
|
|
|
|
}
|
|
|
|
|
|
2011-11-08 19:05:59 +01:00
|
|
|
$this->print_extra_script( $handle );
|
2015-01-17 02:37:22 +01:00
|
|
|
|
|
|
|
|
if ( $has_conditional_data ) {
|
|
|
|
|
echo $cond_after;
|
|
|
|
|
}
|
|
|
|
|
|
2016-02-17 18:11:26 +01:00
|
|
|
// A single item may alias a set of items, by having dependencies, but no source.
|
2018-08-11 19:42:49 +02:00
|
|
|
if ( ! $src ) {
|
|
|
|
|
if ( $inline_script_tag ) {
|
|
|
|
|
if ( $this->do_concat ) {
|
|
|
|
|
$this->print_html .= $inline_script_tag;
|
|
|
|
|
} else {
|
|
|
|
|
echo $inline_script_tag;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2016-02-17 18:11:26 +01:00
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
2015-01-17 02:37:22 +01:00
|
|
|
if ( ! preg_match( '|^(https?:)?//|', $src ) && ! ( $this->content_url && 0 === strpos( $src, $this->content_url ) ) ) {
|
2008-05-21 07:56:04 +02:00
|
|
|
$src = $this->base_url . $src;
|
|
|
|
|
}
|
|
|
|
|
|
2017-12-01 00:11:00 +01:00
|
|
|
if ( ! empty( $ver ) ) {
|
2015-01-17 02:37:22 +01:00
|
|
|
$src = add_query_arg( 'ver', $ver, $src );
|
2017-12-01 00:11:00 +01:00
|
|
|
}
|
2011-11-08 19:05:59 +01:00
|
|
|
|
2014-03-26 06:48:14 +01:00
|
|
|
/** This filter is documented in wp-includes/class.wp-scripts.php */
|
2011-11-08 19:05:59 +01:00
|
|
|
$src = esc_url( apply_filters( 'script_loader_src', $src, $handle ) );
|
2008-05-21 07:56:04 +02:00
|
|
|
|
2017-12-01 00:11:00 +01:00
|
|
|
if ( ! $src ) {
|
2013-09-17 00:12:09 +02:00
|
|
|
return true;
|
2017-12-01 00:11:00 +01:00
|
|
|
}
|
2013-09-17 00:12:09 +02:00
|
|
|
|
2019-09-18 16:50:56 +02:00
|
|
|
$tag = $translations . $cond_before . $before_handle;
|
2020-07-04 18:54:02 +02:00
|
|
|
$tag .= sprintf( "<script%s src='%s' id='%s-js'></script>\n", $this->type_attr, $src, esc_attr( $handle ) );
|
2019-09-18 16:50:56 +02:00
|
|
|
$tag .= $after_handle . $cond_after;
|
2014-11-20 06:18:25 +01:00
|
|
|
|
2015-05-24 07:05:26 +02:00
|
|
|
/**
|
2016-05-22 20:50:28 +02:00
|
|
|
* Filters the HTML script tag of an enqueued script.
|
2014-11-20 06:18:25 +01:00
|
|
|
*
|
|
|
|
|
* @since 4.1.0
|
|
|
|
|
*
|
|
|
|
|
* @param string $tag The `<script>` tag for the enqueued script.
|
|
|
|
|
* @param string $handle The script's registered handle.
|
|
|
|
|
* @param string $src The script's source URL.
|
|
|
|
|
*/
|
|
|
|
|
$tag = apply_filters( 'script_loader_tag', $tag, $handle, $src );
|
|
|
|
|
|
|
|
|
|
if ( $this->do_concat ) {
|
2016-04-10 05:33:26 +02:00
|
|
|
$this->print_html .= $tag;
|
2014-11-20 06:18:25 +01:00
|
|
|
} else {
|
|
|
|
|
echo $tag;
|
|
|
|
|
}
|
2008-05-21 07:56:04 +02:00
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
2016-02-23 17:44:26 +01:00
|
|
|
/**
|
2016-02-25 06:11:26 +01:00
|
|
|
* Adds extra code to a registered script.
|
2016-02-23 17:44:26 +01:00
|
|
|
*
|
|
|
|
|
* @since 4.5.0
|
|
|
|
|
*
|
2020-02-03 01:19:03 +01:00
|
|
|
* @param string $handle Name of the script to add the inline script to.
|
|
|
|
|
* Must be lowercase.
|
2020-12-06 03:21:07 +01:00
|
|
|
* @param string $data String containing the JavaScript to be added.
|
2020-02-03 01:19:03 +01:00
|
|
|
* @param string $position Optional. Whether to add the inline script
|
|
|
|
|
* before the handle or after. Default 'after'.
|
2016-02-23 17:44:26 +01:00
|
|
|
* @return bool True on success, false on failure.
|
|
|
|
|
*/
|
|
|
|
|
public function add_inline_script( $handle, $data, $position = 'after' ) {
|
|
|
|
|
if ( ! $data ) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( 'after' !== $position ) {
|
|
|
|
|
$position = 'before';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$script = (array) $this->get_data( $handle, $position );
|
|
|
|
|
$script[] = $data;
|
|
|
|
|
|
|
|
|
|
return $this->add_data( $handle, $position, $script );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2016-02-25 06:11:26 +01:00
|
|
|
* Prints inline scripts registered for a specific handle.
|
2016-02-23 17:44:26 +01:00
|
|
|
*
|
|
|
|
|
* @since 4.5.0
|
|
|
|
|
*
|
2020-02-03 01:19:03 +01:00
|
|
|
* @param string $handle Name of the script to add the inline script to.
|
|
|
|
|
* Must be lowercase.
|
|
|
|
|
* @param string $position Optional. Whether to add the inline script
|
|
|
|
|
* before the handle or after. Default 'after'.
|
Code Modernization: Rename parameters that use reserved keywords in `wp-includes/class.wp-scripts.php`.
While using reserved PHP keywords as parameter name labels is allowed, in the context of function calls using named parameters in PHP 8.0+, this will easily lead to confusion. To avoid that, it is recommended not to use reserved keywords as function parameter names.
This commit renames the `$echo` parameter to `$display` in `WP_Scripts` class methods.
Follow-up to [52946], [52996], [52997], [52998], [53003], [53014], [53029], [53039], [53116], [53117], [53137], [53174], [53184], [53185], [53192], [53193], [53198], [53203], [53207], [53215], [53216], [53220], [53230], [53232], [53236], [53239], [53240], [53242], [53243], [53245], [53246], [53257], [53269], [53270], [53271], [53272], [53273], [53274], [53275], [53276], [53277], [53281].
Props jrf, aristath, poena, justinahinon, SergeyBiryukov.
See #55327.
Built from https://develop.svn.wordpress.org/trunk@53283
git-svn-id: http://core.svn.wordpress.org/trunk@52872 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-26 16:56:08 +02:00
|
|
|
* @param bool $display Optional. Whether to print the script
|
2020-02-03 01:19:03 +01:00
|
|
|
* instead of just returning it. Default true.
|
2016-02-23 17:44:26 +01:00
|
|
|
* @return string|false Script on success, false otherwise.
|
|
|
|
|
*/
|
Code Modernization: Rename parameters that use reserved keywords in `wp-includes/class.wp-scripts.php`.
While using reserved PHP keywords as parameter name labels is allowed, in the context of function calls using named parameters in PHP 8.0+, this will easily lead to confusion. To avoid that, it is recommended not to use reserved keywords as function parameter names.
This commit renames the `$echo` parameter to `$display` in `WP_Scripts` class methods.
Follow-up to [52946], [52996], [52997], [52998], [53003], [53014], [53029], [53039], [53116], [53117], [53137], [53174], [53184], [53185], [53192], [53193], [53198], [53203], [53207], [53215], [53216], [53220], [53230], [53232], [53236], [53239], [53240], [53242], [53243], [53245], [53246], [53257], [53269], [53270], [53271], [53272], [53273], [53274], [53275], [53276], [53277], [53281].
Props jrf, aristath, poena, justinahinon, SergeyBiryukov.
See #55327.
Built from https://develop.svn.wordpress.org/trunk@53283
git-svn-id: http://core.svn.wordpress.org/trunk@52872 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-26 16:56:08 +02:00
|
|
|
public function print_inline_script( $handle, $position = 'after', $display = true ) {
|
2016-02-23 17:44:26 +01:00
|
|
|
$output = $this->get_data( $handle, $position );
|
|
|
|
|
|
|
|
|
|
if ( empty( $output ) ) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$output = trim( implode( "\n", $output ), "\n" );
|
|
|
|
|
|
Code Modernization: Rename parameters that use reserved keywords in `wp-includes/class.wp-scripts.php`.
While using reserved PHP keywords as parameter name labels is allowed, in the context of function calls using named parameters in PHP 8.0+, this will easily lead to confusion. To avoid that, it is recommended not to use reserved keywords as function parameter names.
This commit renames the `$echo` parameter to `$display` in `WP_Scripts` class methods.
Follow-up to [52946], [52996], [52997], [52998], [53003], [53014], [53029], [53039], [53116], [53117], [53137], [53174], [53184], [53185], [53192], [53193], [53198], [53203], [53207], [53215], [53216], [53220], [53230], [53232], [53236], [53239], [53240], [53242], [53243], [53245], [53246], [53257], [53269], [53270], [53271], [53272], [53273], [53274], [53275], [53276], [53277], [53281].
Props jrf, aristath, poena, justinahinon, SergeyBiryukov.
See #55327.
Built from https://develop.svn.wordpress.org/trunk@53283
git-svn-id: http://core.svn.wordpress.org/trunk@52872 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-26 16:56:08 +02:00
|
|
|
if ( $display ) {
|
2020-07-04 18:54:02 +02:00
|
|
|
printf( "<script%s id='%s-js-%s'>\n%s\n</script>\n", $this->type_attr, esc_attr( $handle ), esc_attr( $position ), $output );
|
2016-02-23 17:44:26 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $output;
|
|
|
|
|
}
|
|
|
|
|
|
2008-05-21 07:56:04 +02:00
|
|
|
/**
|
2016-02-27 21:34:29 +01:00
|
|
|
* Localizes a script, only if the script has already been added.
|
2008-05-21 07:56:04 +02:00
|
|
|
*
|
2016-02-26 14:05:26 +01:00
|
|
|
* @since 2.1.0
|
|
|
|
|
*
|
2018-08-27 16:34:24 +02:00
|
|
|
* @param string $handle Name of the script to attach data to.
|
|
|
|
|
* @param string $object_name Name of the variable that will contain the data.
|
|
|
|
|
* @param array $l10n Array of data to localize.
|
|
|
|
|
* @return bool True on success, false on failure.
|
2008-05-21 07:56:04 +02:00
|
|
|
*/
|
2014-05-19 08:17:14 +02:00
|
|
|
public function localize( $handle, $object_name, $l10n ) {
|
2020-02-09 17:55:09 +01:00
|
|
|
if ( 'jquery' === $handle ) {
|
2013-07-10 07:38:17 +02:00
|
|
|
$handle = 'jquery-core';
|
2017-12-01 00:11:00 +01:00
|
|
|
}
|
2013-07-10 07:38:17 +02:00
|
|
|
|
2018-08-27 16:34:24 +02:00
|
|
|
if ( is_array( $l10n ) && isset( $l10n['l10n_print_after'] ) ) { // back compat, preserve the code in 'l10n_print_after' if present.
|
2011-11-08 19:05:59 +01:00
|
|
|
$after = $l10n['l10n_print_after'];
|
2017-12-01 00:11:00 +01:00
|
|
|
unset( $l10n['l10n_print_after'] );
|
2011-11-08 19:05:59 +01:00
|
|
|
}
|
|
|
|
|
|
2021-02-23 00:23:07 +01:00
|
|
|
if ( ! is_array( $l10n ) ) {
|
|
|
|
|
_doing_it_wrong(
|
|
|
|
|
__METHOD__,
|
|
|
|
|
sprintf(
|
|
|
|
|
/* translators: 1: $l10n, 2: wp_add_inline_script() */
|
|
|
|
|
__( 'The %1$s parameter must be an array. To pass arbitrary data to scripts, use the %2$s function instead.' ),
|
|
|
|
|
'<code>$l10n</code>',
|
|
|
|
|
'<code>wp_add_inline_script()</code>'
|
|
|
|
|
),
|
|
|
|
|
'5.7.0'
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( is_string( $l10n ) ) {
|
|
|
|
|
$l10n = html_entity_decode( $l10n, ENT_QUOTES, 'UTF-8' );
|
|
|
|
|
} else {
|
|
|
|
|
foreach ( (array) $l10n as $key => $value ) {
|
|
|
|
|
if ( ! is_scalar( $value ) ) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
2011-11-08 19:05:59 +01:00
|
|
|
|
2021-02-23 00:23:07 +01:00
|
|
|
$l10n[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
|
|
|
|
|
}
|
2011-11-08 19:05:59 +01:00
|
|
|
}
|
|
|
|
|
|
2014-10-28 19:35:19 +01:00
|
|
|
$script = "var $object_name = " . wp_json_encode( $l10n ) . ';';
|
2011-11-08 19:05:59 +01:00
|
|
|
|
2017-12-01 00:11:00 +01:00
|
|
|
if ( ! empty( $after ) ) {
|
2012-02-06 19:52:57 +01:00
|
|
|
$script .= "\n$after;";
|
2017-12-01 00:11:00 +01:00
|
|
|
}
|
2011-11-08 19:05:59 +01:00
|
|
|
|
2011-07-28 20:24:00 +02:00
|
|
|
$data = $this->get_data( $handle, 'data' );
|
|
|
|
|
|
2017-12-01 00:11:00 +01:00
|
|
|
if ( ! empty( $data ) ) {
|
2012-02-06 19:52:57 +01:00
|
|
|
$script = "$data\n$script";
|
2017-12-01 00:11:00 +01:00
|
|
|
}
|
2011-07-25 02:36:06 +02:00
|
|
|
|
2011-11-08 19:05:59 +01:00
|
|
|
return $this->add_data( $handle, 'data', $script );
|
2008-05-21 07:56:04 +02:00
|
|
|
}
|
|
|
|
|
|
2015-05-24 07:05:26 +02:00
|
|
|
/**
|
2016-02-27 21:34:29 +01:00
|
|
|
* Sets handle group.
|
2016-02-26 14:05:26 +01:00
|
|
|
*
|
|
|
|
|
* @since 2.8.0
|
|
|
|
|
*
|
2016-02-27 21:34:29 +01:00
|
|
|
* @see WP_Dependencies::set_group()
|
|
|
|
|
*
|
|
|
|
|
* @param string $handle Name of the item. Should be unique.
|
|
|
|
|
* @param bool $recursion Internal flag that calling function was called recursively.
|
2020-02-03 01:19:03 +01:00
|
|
|
* @param int|false $group Optional. Group level: level (int), no groups (false).
|
|
|
|
|
* Default false.
|
|
|
|
|
* @return bool Not already in the group or a lower group.
|
2015-05-24 07:05:26 +02:00
|
|
|
*/
|
2014-05-19 08:17:14 +02:00
|
|
|
public function set_group( $handle, $recursion, $group = false ) {
|
2020-02-09 17:55:09 +01:00
|
|
|
if ( isset( $this->registered[ $handle ]->args ) && 1 === $this->registered[ $handle ]->args ) {
|
2011-08-03 03:54:29 +02:00
|
|
|
$grp = 1;
|
2017-12-01 00:11:00 +01:00
|
|
|
} else {
|
2011-08-03 03:54:29 +02:00
|
|
|
$grp = (int) $this->get_data( $handle, 'group' );
|
2017-12-01 00:11:00 +01:00
|
|
|
}
|
2011-07-28 20:24:00 +02:00
|
|
|
|
2017-12-01 00:11:00 +01:00
|
|
|
if ( false !== $group && $grp > $group ) {
|
2009-01-14 15:18:51 +01:00
|
|
|
$grp = $group;
|
2017-12-01 00:11:00 +01:00
|
|
|
}
|
2009-01-14 15:18:51 +01:00
|
|
|
|
2009-04-22 23:01:36 +02:00
|
|
|
return parent::set_group( $handle, $recursion, $grp );
|
2009-01-14 15:18:51 +01:00
|
|
|
}
|
|
|
|
|
|
I18N: Add JavaScript translation support.
Adds the `wp_set_script_translations()` function which registers translations for a JavaScript file. This function takes a handle, domain and optionally a path and ensures JavaScript translation files are loaded if they exist.
Merges [43825,43828,43859,43898] from the 5.0 branch to trunk.
Props herregroen, atimmer, omarreiss, nerrad, swissspidy, ocean90, georgestephanis.
Fixes #45103, #45256.
Built from https://develop.svn.wordpress.org/trunk@44169
git-svn-id: http://core.svn.wordpress.org/trunk@43999 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-14 06:52:52 +01:00
|
|
|
/**
|
|
|
|
|
* Sets a translation textdomain.
|
|
|
|
|
*
|
|
|
|
|
* @since 5.0.0
|
2019-01-04 22:12:50 +01:00
|
|
|
* @since 5.1.0 The `$domain` parameter was made optional.
|
I18N: Add JavaScript translation support.
Adds the `wp_set_script_translations()` function which registers translations for a JavaScript file. This function takes a handle, domain and optionally a path and ensures JavaScript translation files are loaded if they exist.
Merges [43825,43828,43859,43898] from the 5.0 branch to trunk.
Props herregroen, atimmer, omarreiss, nerrad, swissspidy, ocean90, georgestephanis.
Fixes #45103, #45256.
Built from https://develop.svn.wordpress.org/trunk@44169
git-svn-id: http://core.svn.wordpress.org/trunk@43999 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-14 06:52:52 +01:00
|
|
|
*
|
|
|
|
|
* @param string $handle Name of the script to register a translation domain to.
|
2019-01-04 22:12:50 +01:00
|
|
|
* @param string $domain Optional. Text domain. Default 'default'.
|
I18N: Add JavaScript translation support.
Adds the `wp_set_script_translations()` function which registers translations for a JavaScript file. This function takes a handle, domain and optionally a path and ensures JavaScript translation files are loaded if they exist.
Merges [43825,43828,43859,43898] from the 5.0 branch to trunk.
Props herregroen, atimmer, omarreiss, nerrad, swissspidy, ocean90, georgestephanis.
Fixes #45103, #45256.
Built from https://develop.svn.wordpress.org/trunk@44169
git-svn-id: http://core.svn.wordpress.org/trunk@43999 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-14 06:52:52 +01:00
|
|
|
* @param string $path Optional. The full file path to the directory containing translation files.
|
2019-01-04 22:12:50 +01:00
|
|
|
* @return bool True if the text domain was registered, false if not.
|
I18N: Add JavaScript translation support.
Adds the `wp_set_script_translations()` function which registers translations for a JavaScript file. This function takes a handle, domain and optionally a path and ensures JavaScript translation files are loaded if they exist.
Merges [43825,43828,43859,43898] from the 5.0 branch to trunk.
Props herregroen, atimmer, omarreiss, nerrad, swissspidy, ocean90, georgestephanis.
Fixes #45103, #45256.
Built from https://develop.svn.wordpress.org/trunk@44169
git-svn-id: http://core.svn.wordpress.org/trunk@43999 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-14 06:52:52 +01:00
|
|
|
*/
|
2019-01-04 22:12:50 +01:00
|
|
|
public function set_translations( $handle, $domain = 'default', $path = null ) {
|
I18N: Add JavaScript translation support.
Adds the `wp_set_script_translations()` function which registers translations for a JavaScript file. This function takes a handle, domain and optionally a path and ensures JavaScript translation files are loaded if they exist.
Merges [43825,43828,43859,43898] from the 5.0 branch to trunk.
Props herregroen, atimmer, omarreiss, nerrad, swissspidy, ocean90, georgestephanis.
Fixes #45103, #45256.
Built from https://develop.svn.wordpress.org/trunk@44169
git-svn-id: http://core.svn.wordpress.org/trunk@43999 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-14 06:52:52 +01:00
|
|
|
if ( ! isset( $this->registered[ $handle ] ) ) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** @var \_WP_Dependency $obj */
|
|
|
|
|
$obj = $this->registered[ $handle ];
|
|
|
|
|
|
|
|
|
|
if ( ! in_array( 'wp-i18n', $obj->deps, true ) ) {
|
|
|
|
|
$obj->deps[] = 'wp-i18n';
|
|
|
|
|
}
|
2019-01-04 22:12:50 +01:00
|
|
|
|
I18N: Add JavaScript translation support.
Adds the `wp_set_script_translations()` function which registers translations for a JavaScript file. This function takes a handle, domain and optionally a path and ensures JavaScript translation files are loaded if they exist.
Merges [43825,43828,43859,43898] from the 5.0 branch to trunk.
Props herregroen, atimmer, omarreiss, nerrad, swissspidy, ocean90, georgestephanis.
Fixes #45103, #45256.
Built from https://develop.svn.wordpress.org/trunk@44169
git-svn-id: http://core.svn.wordpress.org/trunk@43999 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-14 06:52:52 +01:00
|
|
|
return $obj->set_translations( $domain, $path );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Prints translations set for a specific handle.
|
|
|
|
|
*
|
|
|
|
|
* @since 5.0.0
|
|
|
|
|
*
|
Code Modernization: Rename parameters that use reserved keywords in `wp-includes/class.wp-scripts.php`.
While using reserved PHP keywords as parameter name labels is allowed, in the context of function calls using named parameters in PHP 8.0+, this will easily lead to confusion. To avoid that, it is recommended not to use reserved keywords as function parameter names.
This commit renames the `$echo` parameter to `$display` in `WP_Scripts` class methods.
Follow-up to [52946], [52996], [52997], [52998], [53003], [53014], [53029], [53039], [53116], [53117], [53137], [53174], [53184], [53185], [53192], [53193], [53198], [53203], [53207], [53215], [53216], [53220], [53230], [53232], [53236], [53239], [53240], [53242], [53243], [53245], [53246], [53257], [53269], [53270], [53271], [53272], [53273], [53274], [53275], [53276], [53277], [53281].
Props jrf, aristath, poena, justinahinon, SergeyBiryukov.
See #55327.
Built from https://develop.svn.wordpress.org/trunk@53283
git-svn-id: http://core.svn.wordpress.org/trunk@52872 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-26 16:56:08 +02:00
|
|
|
* @param string $handle Name of the script to add the inline script to.
|
|
|
|
|
* Must be lowercase.
|
|
|
|
|
* @param bool $display Optional. Whether to print the script
|
|
|
|
|
* instead of just returning it. Default true.
|
I18N: Add JavaScript translation support.
Adds the `wp_set_script_translations()` function which registers translations for a JavaScript file. This function takes a handle, domain and optionally a path and ensures JavaScript translation files are loaded if they exist.
Merges [43825,43828,43859,43898] from the 5.0 branch to trunk.
Props herregroen, atimmer, omarreiss, nerrad, swissspidy, ocean90, georgestephanis.
Fixes #45103, #45256.
Built from https://develop.svn.wordpress.org/trunk@44169
git-svn-id: http://core.svn.wordpress.org/trunk@43999 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-14 06:52:52 +01:00
|
|
|
* @return string|false Script on success, false otherwise.
|
|
|
|
|
*/
|
Code Modernization: Rename parameters that use reserved keywords in `wp-includes/class.wp-scripts.php`.
While using reserved PHP keywords as parameter name labels is allowed, in the context of function calls using named parameters in PHP 8.0+, this will easily lead to confusion. To avoid that, it is recommended not to use reserved keywords as function parameter names.
This commit renames the `$echo` parameter to `$display` in `WP_Scripts` class methods.
Follow-up to [52946], [52996], [52997], [52998], [53003], [53014], [53029], [53039], [53116], [53117], [53137], [53174], [53184], [53185], [53192], [53193], [53198], [53203], [53207], [53215], [53216], [53220], [53230], [53232], [53236], [53239], [53240], [53242], [53243], [53245], [53246], [53257], [53269], [53270], [53271], [53272], [53273], [53274], [53275], [53276], [53277], [53281].
Props jrf, aristath, poena, justinahinon, SergeyBiryukov.
See #55327.
Built from https://develop.svn.wordpress.org/trunk@53283
git-svn-id: http://core.svn.wordpress.org/trunk@52872 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-26 16:56:08 +02:00
|
|
|
public function print_translations( $handle, $display = true ) {
|
I18N: Add JavaScript translation support.
Adds the `wp_set_script_translations()` function which registers translations for a JavaScript file. This function takes a handle, domain and optionally a path and ensures JavaScript translation files are loaded if they exist.
Merges [43825,43828,43859,43898] from the 5.0 branch to trunk.
Props herregroen, atimmer, omarreiss, nerrad, swissspidy, ocean90, georgestephanis.
Fixes #45103, #45256.
Built from https://develop.svn.wordpress.org/trunk@44169
git-svn-id: http://core.svn.wordpress.org/trunk@43999 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-14 06:52:52 +01:00
|
|
|
if ( ! isset( $this->registered[ $handle ] ) || empty( $this->registered[ $handle ]->textdomain ) ) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$domain = $this->registered[ $handle ]->textdomain;
|
|
|
|
|
$path = $this->registered[ $handle ]->translations_path;
|
|
|
|
|
|
|
|
|
|
$json_translations = load_script_textdomain( $handle, $domain, $path );
|
|
|
|
|
|
|
|
|
|
if ( ! $json_translations ) {
|
2022-03-15 17:00:02 +01:00
|
|
|
return false;
|
I18N: Add JavaScript translation support.
Adds the `wp_set_script_translations()` function which registers translations for a JavaScript file. This function takes a handle, domain and optionally a path and ensures JavaScript translation files are loaded if they exist.
Merges [43825,43828,43859,43898] from the 5.0 branch to trunk.
Props herregroen, atimmer, omarreiss, nerrad, swissspidy, ocean90, georgestephanis.
Fixes #45103, #45256.
Built from https://develop.svn.wordpress.org/trunk@44169
git-svn-id: http://core.svn.wordpress.org/trunk@43999 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-14 06:52:52 +01:00
|
|
|
}
|
|
|
|
|
|
2019-01-06 17:23:49 +01:00
|
|
|
$output = <<<JS
|
|
|
|
|
( function( domain, translations ) {
|
|
|
|
|
var localeData = translations.locale_data[ domain ] || translations.locale_data.messages;
|
|
|
|
|
localeData[""].domain = domain;
|
|
|
|
|
wp.i18n.setLocaleData( localeData, domain );
|
|
|
|
|
} )( "{$domain}", {$json_translations} );
|
|
|
|
|
JS;
|
I18N: Add JavaScript translation support.
Adds the `wp_set_script_translations()` function which registers translations for a JavaScript file. This function takes a handle, domain and optionally a path and ensures JavaScript translation files are loaded if they exist.
Merges [43825,43828,43859,43898] from the 5.0 branch to trunk.
Props herregroen, atimmer, omarreiss, nerrad, swissspidy, ocean90, georgestephanis.
Fixes #45103, #45256.
Built from https://develop.svn.wordpress.org/trunk@44169
git-svn-id: http://core.svn.wordpress.org/trunk@43999 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-14 06:52:52 +01:00
|
|
|
|
Code Modernization: Rename parameters that use reserved keywords in `wp-includes/class.wp-scripts.php`.
While using reserved PHP keywords as parameter name labels is allowed, in the context of function calls using named parameters in PHP 8.0+, this will easily lead to confusion. To avoid that, it is recommended not to use reserved keywords as function parameter names.
This commit renames the `$echo` parameter to `$display` in `WP_Scripts` class methods.
Follow-up to [52946], [52996], [52997], [52998], [53003], [53014], [53029], [53039], [53116], [53117], [53137], [53174], [53184], [53185], [53192], [53193], [53198], [53203], [53207], [53215], [53216], [53220], [53230], [53232], [53236], [53239], [53240], [53242], [53243], [53245], [53246], [53257], [53269], [53270], [53271], [53272], [53273], [53274], [53275], [53276], [53277], [53281].
Props jrf, aristath, poena, justinahinon, SergeyBiryukov.
See #55327.
Built from https://develop.svn.wordpress.org/trunk@53283
git-svn-id: http://core.svn.wordpress.org/trunk@52872 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-26 16:56:08 +02:00
|
|
|
if ( $display ) {
|
2020-07-04 18:54:02 +02:00
|
|
|
printf( "<script%s id='%s-js-translations'>\n%s\n</script>\n", $this->type_attr, esc_attr( $handle ), $output );
|
I18N: Add JavaScript translation support.
Adds the `wp_set_script_translations()` function which registers translations for a JavaScript file. This function takes a handle, domain and optionally a path and ensures JavaScript translation files are loaded if they exist.
Merges [43825,43828,43859,43898] from the 5.0 branch to trunk.
Props herregroen, atimmer, omarreiss, nerrad, swissspidy, ocean90, georgestephanis.
Fixes #45103, #45256.
Built from https://develop.svn.wordpress.org/trunk@44169
git-svn-id: http://core.svn.wordpress.org/trunk@43999 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-14 06:52:52 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $output;
|
|
|
|
|
}
|
|
|
|
|
|
2015-05-24 07:05:26 +02:00
|
|
|
/**
|
2016-02-27 21:34:29 +01:00
|
|
|
* Determines script dependencies.
|
2017-12-01 00:11:00 +01:00
|
|
|
*
|
2016-02-26 14:05:26 +01:00
|
|
|
* @since 2.1.0
|
|
|
|
|
*
|
2016-02-27 21:34:29 +01:00
|
|
|
* @see WP_Dependencies::all_deps()
|
|
|
|
|
*
|
2020-02-03 01:19:03 +01:00
|
|
|
* @param string|string[] $handles Item handle (string) or item handles (array of strings).
|
|
|
|
|
* @param bool $recursion Optional. Internal flag that function is calling itself.
|
|
|
|
|
* Default false.
|
|
|
|
|
* @param int|false $group Optional. Group level: level (int), no groups (false).
|
|
|
|
|
* Default false.
|
2015-05-24 07:05:26 +02:00
|
|
|
* @return bool True on success, false on failure.
|
|
|
|
|
*/
|
2014-05-19 08:17:14 +02:00
|
|
|
public function all_deps( $handles, $recursion = false, $group = false ) {
|
2016-03-06 20:50:27 +01:00
|
|
|
$r = parent::all_deps( $handles, $recursion, $group );
|
2014-03-26 06:48:14 +01:00
|
|
|
if ( ! $recursion ) {
|
|
|
|
|
/**
|
2016-05-22 20:50:28 +02:00
|
|
|
* Filters the list of script dependencies left to print.
|
2014-03-26 06:48:14 +01:00
|
|
|
*
|
|
|
|
|
* @since 2.3.0
|
|
|
|
|
*
|
2018-03-25 21:33:31 +02:00
|
|
|
* @param string[] $to_do An array of script dependency handles.
|
2014-03-26 06:48:14 +01:00
|
|
|
*/
|
2008-05-21 07:56:04 +02:00
|
|
|
$this->to_do = apply_filters( 'print_scripts_array', $this->to_do );
|
2014-03-26 06:48:14 +01:00
|
|
|
}
|
2008-05-21 07:56:04 +02:00
|
|
|
return $r;
|
|
|
|
|
}
|
2009-01-14 15:18:51 +01:00
|
|
|
|
2015-05-24 07:05:26 +02:00
|
|
|
/**
|
2016-02-27 21:34:29 +01:00
|
|
|
* Processes items and dependencies for the head group.
|
2016-02-26 14:05:26 +01:00
|
|
|
*
|
|
|
|
|
* @since 2.8.0
|
|
|
|
|
*
|
2016-02-27 21:34:29 +01:00
|
|
|
* @see WP_Dependencies::do_items()
|
|
|
|
|
*
|
2019-11-05 22:27:02 +01:00
|
|
|
* @return string[] Handles of items that have been processed.
|
2015-05-24 07:05:26 +02:00
|
|
|
*/
|
2014-05-19 08:17:14 +02:00
|
|
|
public function do_head_items() {
|
2017-12-01 00:11:00 +01:00
|
|
|
$this->do_items( false, 0 );
|
2009-01-14 15:18:51 +01:00
|
|
|
return $this->done;
|
|
|
|
|
}
|
|
|
|
|
|
2015-05-24 07:05:26 +02:00
|
|
|
/**
|
2016-02-27 21:34:29 +01:00
|
|
|
* Processes items and dependencies for the footer group.
|
2016-02-26 14:05:26 +01:00
|
|
|
*
|
|
|
|
|
* @since 2.8.0
|
|
|
|
|
*
|
2016-02-27 21:34:29 +01:00
|
|
|
* @see WP_Dependencies::do_items()
|
|
|
|
|
*
|
2019-11-05 22:27:02 +01:00
|
|
|
* @return string[] Handles of items that have been processed.
|
2015-05-24 07:05:26 +02:00
|
|
|
*/
|
2014-05-19 08:17:14 +02:00
|
|
|
public function do_footer_items() {
|
2017-12-01 00:11:00 +01:00
|
|
|
$this->do_items( false, 1 );
|
2009-01-14 15:18:51 +01:00
|
|
|
return $this->done;
|
|
|
|
|
}
|
|
|
|
|
|
2015-05-24 07:05:26 +02:00
|
|
|
/**
|
2016-02-27 21:34:29 +01:00
|
|
|
* Whether a handle's source is in a default directory.
|
2016-02-26 14:05:26 +01:00
|
|
|
*
|
|
|
|
|
* @since 2.8.0
|
|
|
|
|
*
|
2016-02-27 21:34:29 +01:00
|
|
|
* @param string $src The source of the enqueued script.
|
|
|
|
|
* @return bool True if found, false if not.
|
2015-05-24 07:05:26 +02:00
|
|
|
*/
|
2014-06-30 00:23:15 +02:00
|
|
|
public function in_default_dir( $src ) {
|
|
|
|
|
if ( ! $this->default_dirs ) {
|
2009-01-14 15:18:51 +01:00
|
|
|
return true;
|
2014-06-30 00:23:15 +02:00
|
|
|
}
|
2009-01-14 15:18:51 +01:00
|
|
|
|
2014-06-30 00:23:15 +02:00
|
|
|
if ( 0 === strpos( $src, '/' . WPINC . '/js/l10n' ) ) {
|
2010-11-10 22:53:30 +01:00
|
|
|
return false;
|
2014-06-30 00:23:15 +02:00
|
|
|
}
|
2010-11-17 19:47:34 +01:00
|
|
|
|
2009-01-14 15:18:51 +01:00
|
|
|
foreach ( (array) $this->default_dirs as $test ) {
|
2014-06-30 00:23:15 +02:00
|
|
|
if ( 0 === strpos( $src, $test ) ) {
|
2009-01-14 15:18:51 +01:00
|
|
|
return true;
|
2014-06-30 00:23:15 +02:00
|
|
|
}
|
2009-01-14 15:18:51 +01:00
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2009-01-26 13:59:10 +01:00
|
|
|
|
2015-05-29 23:37:24 +02:00
|
|
|
/**
|
2016-02-27 21:34:29 +01:00
|
|
|
* Resets class properties.
|
2016-02-26 14:05:26 +01:00
|
|
|
*
|
|
|
|
|
* @since 2.8.0
|
2015-05-29 23:37:24 +02:00
|
|
|
*/
|
2014-05-19 08:17:14 +02:00
|
|
|
public function reset() {
|
2017-12-01 00:11:00 +01:00
|
|
|
$this->do_concat = false;
|
|
|
|
|
$this->print_code = '';
|
|
|
|
|
$this->concat = '';
|
2009-01-26 13:59:10 +01:00
|
|
|
$this->concat_version = '';
|
2017-12-01 00:11:00 +01:00
|
|
|
$this->print_html = '';
|
|
|
|
|
$this->ext_version = '';
|
|
|
|
|
$this->ext_handles = '';
|
2009-01-26 13:59:10 +01:00
|
|
|
}
|
2008-05-21 07:56:04 +02:00
|
|
|
}
|