Coding Standards: Rename WordPress Dependencies API class files.
The current coding standards note that the name of the class files should be based on the class name with `class-` prepended, and the underscores replaced by hyphens (see the [https://developer.wordpress.org/coding-standards/wordpress-coding-standards/php/#naming-conventions Naming Conventions] section in the handbook), except for the three legacy files: `class.wp-dependencies.php`, `class.wp-scripts.php`, `class.wp-styles.php`. To bring more consistency to the codebase and make it easier to implement autoloading in the future, this commit renames those three legacy files to conform to the coding standards: * `wp-includes/class.wp-dependencies.php` → `wp-includes/class-wp-dependencies.php` * `wp-includes/class.wp-scripts.php` → `wp-includes/class-wp-scripts.php` * `wp-includes/class.wp-styles.php` → `wp-includes/class-wp-styles.php` Includes: * Loading the new files from the old ones, for anyone that may have been including the files directly. * Replacing references to the old filenames with the new filenames. Follow-up to [7970], [45654], [45662], [45663], [45678], [47197], [52026], [53749]. Props afragen, schlessera, swissspidy, dingo_d, hellofromTonya, SergeyBiryukov. Fixes #37861. See #55647. Built from https://develop.svn.wordpress.org/trunk@54254 git-svn-id: http://core.svn.wordpress.org/trunk@53813 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
62f77df49a
commit
c58963b07f
|
@ -0,0 +1,494 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Dependencies API: WP_Dependencies base class
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
*
|
||||||
|
* @package WordPress
|
||||||
|
* @subpackage Dependencies
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Core base class extended to register items.
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
*
|
||||||
|
* @see _WP_Dependency
|
||||||
|
*/
|
||||||
|
#[AllowDynamicProperties]
|
||||||
|
class WP_Dependencies {
|
||||||
|
/**
|
||||||
|
* An array of all registered dependencies keyed by handle.
|
||||||
|
*
|
||||||
|
* @since 2.6.8
|
||||||
|
*
|
||||||
|
* @var _WP_Dependency[]
|
||||||
|
*/
|
||||||
|
public $registered = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An array of handles of queued dependencies.
|
||||||
|
*
|
||||||
|
* @since 2.6.8
|
||||||
|
*
|
||||||
|
* @var string[]
|
||||||
|
*/
|
||||||
|
public $queue = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An array of handles of dependencies to queue.
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
*
|
||||||
|
* @var string[]
|
||||||
|
*/
|
||||||
|
public $to_do = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An array of handles of dependencies already queued.
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
*
|
||||||
|
* @var string[]
|
||||||
|
*/
|
||||||
|
public $done = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An array of additional arguments passed when a handle is registered.
|
||||||
|
*
|
||||||
|
* Arguments are appended to the item query string.
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
public $args = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An array of dependency groups to enqueue.
|
||||||
|
*
|
||||||
|
* Each entry is keyed by handle and represents the integer group level or boolean
|
||||||
|
* false if the handle has no group.
|
||||||
|
*
|
||||||
|
* @since 2.8.0
|
||||||
|
*
|
||||||
|
* @var (int|false)[]
|
||||||
|
*/
|
||||||
|
public $groups = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A handle group to enqueue.
|
||||||
|
*
|
||||||
|
* @since 2.8.0
|
||||||
|
*
|
||||||
|
* @deprecated 4.5.0
|
||||||
|
* @var int
|
||||||
|
*/
|
||||||
|
public $group = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cached lookup array of flattened queued items and dependencies.
|
||||||
|
*
|
||||||
|
* @since 5.4.0
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
private $all_queued_deps;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List of assets enqueued before details were registered.
|
||||||
|
*
|
||||||
|
* @since 5.9.0
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
private $queued_before_register = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Processes the items and dependencies.
|
||||||
|
*
|
||||||
|
* Processes the items passed to it or the queue, and their dependencies.
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
* @since 2.8.0 Added the `$group` parameter.
|
||||||
|
*
|
||||||
|
* @param string|string[]|false $handles Optional. Items to be processed: queue (false),
|
||||||
|
* single item (string), or multiple items (array of strings).
|
||||||
|
* Default false.
|
||||||
|
* @param int|false $group Optional. Group level: level (int), no group (false).
|
||||||
|
* @return string[] Array of handles of items that have been processed.
|
||||||
|
*/
|
||||||
|
public function do_items( $handles = false, $group = false ) {
|
||||||
|
/*
|
||||||
|
* If nothing is passed, print the queue. If a string is passed,
|
||||||
|
* print that item. If an array is passed, print those items.
|
||||||
|
*/
|
||||||
|
$handles = false === $handles ? $this->queue : (array) $handles;
|
||||||
|
$this->all_deps( $handles );
|
||||||
|
|
||||||
|
foreach ( $this->to_do as $key => $handle ) {
|
||||||
|
if ( ! in_array( $handle, $this->done, true ) && isset( $this->registered[ $handle ] ) ) {
|
||||||
|
/*
|
||||||
|
* Attempt to process the item. If successful,
|
||||||
|
* add the handle to the done array.
|
||||||
|
*
|
||||||
|
* Unset the item from the to_do array.
|
||||||
|
*/
|
||||||
|
if ( $this->do_item( $handle, $group ) ) {
|
||||||
|
$this->done[] = $handle;
|
||||||
|
}
|
||||||
|
|
||||||
|
unset( $this->to_do[ $key ] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->done;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Processes a dependency.
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
* @since 5.5.0 Added the `$group` parameter.
|
||||||
|
*
|
||||||
|
* @param string $handle Name of the item. Should be unique.
|
||||||
|
* @param int|false $group Optional. Group level: level (int), no group (false).
|
||||||
|
* Default false.
|
||||||
|
* @return bool True on success, false if not set.
|
||||||
|
*/
|
||||||
|
public function do_item( $handle, $group = false ) {
|
||||||
|
return isset( $this->registered[ $handle ] );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines dependencies.
|
||||||
|
*
|
||||||
|
* Recursively builds an array of items to process taking
|
||||||
|
* dependencies into account. Does NOT catch infinite loops.
|
||||||
|
*
|
||||||
|
* @since 2.1.0
|
||||||
|
* @since 2.6.0 Moved from `WP_Scripts`.
|
||||||
|
* @since 2.8.0 Added the `$group` parameter.
|
||||||
|
*
|
||||||
|
* @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 group (false).
|
||||||
|
* Default false.
|
||||||
|
* @return bool True on success, false on failure.
|
||||||
|
*/
|
||||||
|
public function all_deps( $handles, $recursion = false, $group = false ) {
|
||||||
|
$handles = (array) $handles;
|
||||||
|
if ( ! $handles ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ( $handles as $handle ) {
|
||||||
|
$handle_parts = explode( '?', $handle );
|
||||||
|
$handle = $handle_parts[0];
|
||||||
|
$queued = in_array( $handle, $this->to_do, true );
|
||||||
|
|
||||||
|
if ( in_array( $handle, $this->done, true ) ) { // Already done.
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$moved = $this->set_group( $handle, $recursion, $group );
|
||||||
|
$new_group = $this->groups[ $handle ];
|
||||||
|
|
||||||
|
if ( $queued && ! $moved ) { // Already queued and in the right group.
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$keep_going = true;
|
||||||
|
if ( ! isset( $this->registered[ $handle ] ) ) {
|
||||||
|
$keep_going = false; // Item doesn't exist.
|
||||||
|
} elseif ( $this->registered[ $handle ]->deps && array_diff( $this->registered[ $handle ]->deps, array_keys( $this->registered ) ) ) {
|
||||||
|
$keep_going = false; // Item requires dependencies that don't exist.
|
||||||
|
} elseif ( $this->registered[ $handle ]->deps && ! $this->all_deps( $this->registered[ $handle ]->deps, true, $new_group ) ) {
|
||||||
|
$keep_going = false; // Item requires dependencies that don't exist.
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! $keep_going ) { // Either item or its dependencies don't exist.
|
||||||
|
if ( $recursion ) {
|
||||||
|
return false; // Abort this branch.
|
||||||
|
} else {
|
||||||
|
continue; // We're at the top level. Move on to the next one.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $queued ) { // Already grabbed it and its dependencies.
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isset( $handle_parts[1] ) ) {
|
||||||
|
$this->args[ $handle ] = $handle_parts[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->to_do[] = $handle;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register an item.
|
||||||
|
*
|
||||||
|
* Registers the item if no item of that name already exists.
|
||||||
|
*
|
||||||
|
* @since 2.1.0
|
||||||
|
* @since 2.6.0 Moved from `WP_Scripts`.
|
||||||
|
*
|
||||||
|
* @param string $handle Name of the item. Should be unique.
|
||||||
|
* @param string|bool $src Full URL of the item, or path of the item relative
|
||||||
|
* to the WordPress root directory. If source is set to false,
|
||||||
|
* item is an alias of other items it depends on.
|
||||||
|
* @param string[] $deps Optional. An array of registered item handles this item depends on.
|
||||||
|
* Default empty array.
|
||||||
|
* @param string|bool|null $ver Optional. String specifying item version number, if it has one,
|
||||||
|
* which is added to the URL as a query string for cache busting purposes.
|
||||||
|
* If version is set to false, a version number is automatically added
|
||||||
|
* equal to current installed WordPress version.
|
||||||
|
* If set to null, no version is added.
|
||||||
|
* @param mixed $args Optional. Custom property of the item. NOT the class property $args.
|
||||||
|
* Examples: $media, $in_footer.
|
||||||
|
* @return bool Whether the item has been registered. True on success, false on failure.
|
||||||
|
*/
|
||||||
|
public function add( $handle, $src, $deps = array(), $ver = false, $args = null ) {
|
||||||
|
if ( isset( $this->registered[ $handle ] ) ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$this->registered[ $handle ] = new _WP_Dependency( $handle, $src, $deps, $ver, $args );
|
||||||
|
|
||||||
|
// If the item was enqueued before the details were registered, enqueue it now.
|
||||||
|
if ( array_key_exists( $handle, $this->queued_before_register ) ) {
|
||||||
|
if ( ! is_null( $this->queued_before_register[ $handle ] ) ) {
|
||||||
|
$this->enqueue( $handle . '?' . $this->queued_before_register[ $handle ] );
|
||||||
|
} else {
|
||||||
|
$this->enqueue( $handle );
|
||||||
|
}
|
||||||
|
|
||||||
|
unset( $this->queued_before_register[ $handle ] );
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add extra item data.
|
||||||
|
*
|
||||||
|
* Adds data to a registered item.
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
*
|
||||||
|
* @param string $handle Name of the item. Should be unique.
|
||||||
|
* @param string $key The data key.
|
||||||
|
* @param mixed $value The data value.
|
||||||
|
* @return bool True on success, false on failure.
|
||||||
|
*/
|
||||||
|
public function add_data( $handle, $key, $value ) {
|
||||||
|
if ( ! isset( $this->registered[ $handle ] ) ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->registered[ $handle ]->add_data( $key, $value );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get extra item data.
|
||||||
|
*
|
||||||
|
* Gets data associated with a registered item.
|
||||||
|
*
|
||||||
|
* @since 3.3.0
|
||||||
|
*
|
||||||
|
* @param string $handle Name of the item. Should be unique.
|
||||||
|
* @param string $key The data key.
|
||||||
|
* @return mixed Extra item data (string), false otherwise.
|
||||||
|
*/
|
||||||
|
public function get_data( $handle, $key ) {
|
||||||
|
if ( ! isset( $this->registered[ $handle ] ) ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! isset( $this->registered[ $handle ]->extra[ $key ] ) ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->registered[ $handle ]->extra[ $key ];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Un-register an item or items.
|
||||||
|
*
|
||||||
|
* @since 2.1.0
|
||||||
|
* @since 2.6.0 Moved from `WP_Scripts`.
|
||||||
|
*
|
||||||
|
* @param string|string[] $handles Item handle (string) or item handles (array of strings).
|
||||||
|
*/
|
||||||
|
public function remove( $handles ) {
|
||||||
|
foreach ( (array) $handles as $handle ) {
|
||||||
|
unset( $this->registered[ $handle ] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Queue an item or items.
|
||||||
|
*
|
||||||
|
* Decodes handles and arguments, then queues handles and stores
|
||||||
|
* arguments in the class property $args. For example in extending
|
||||||
|
* classes, $args is appended to the item url as a query string.
|
||||||
|
* Note $args is NOT the $args property of items in the $registered array.
|
||||||
|
*
|
||||||
|
* @since 2.1.0
|
||||||
|
* @since 2.6.0 Moved from `WP_Scripts`.
|
||||||
|
*
|
||||||
|
* @param string|string[] $handles Item handle (string) or item handles (array of strings).
|
||||||
|
*/
|
||||||
|
public function enqueue( $handles ) {
|
||||||
|
foreach ( (array) $handles as $handle ) {
|
||||||
|
$handle = explode( '?', $handle );
|
||||||
|
|
||||||
|
if ( ! in_array( $handle[0], $this->queue, true ) && isset( $this->registered[ $handle[0] ] ) ) {
|
||||||
|
$this->queue[] = $handle[0];
|
||||||
|
|
||||||
|
// Reset all dependencies so they must be recalculated in recurse_deps().
|
||||||
|
$this->all_queued_deps = null;
|
||||||
|
|
||||||
|
if ( isset( $handle[1] ) ) {
|
||||||
|
$this->args[ $handle[0] ] = $handle[1];
|
||||||
|
}
|
||||||
|
} elseif ( ! isset( $this->registered[ $handle[0] ] ) ) {
|
||||||
|
$this->queued_before_register[ $handle[0] ] = null; // $args
|
||||||
|
|
||||||
|
if ( isset( $handle[1] ) ) {
|
||||||
|
$this->queued_before_register[ $handle[0] ] = $handle[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dequeue an item or items.
|
||||||
|
*
|
||||||
|
* Decodes handles and arguments, then dequeues handles
|
||||||
|
* and removes arguments from the class property $args.
|
||||||
|
*
|
||||||
|
* @since 2.1.0
|
||||||
|
* @since 2.6.0 Moved from `WP_Scripts`.
|
||||||
|
*
|
||||||
|
* @param string|string[] $handles Item handle (string) or item handles (array of strings).
|
||||||
|
*/
|
||||||
|
public function dequeue( $handles ) {
|
||||||
|
foreach ( (array) $handles as $handle ) {
|
||||||
|
$handle = explode( '?', $handle );
|
||||||
|
$key = array_search( $handle[0], $this->queue, true );
|
||||||
|
|
||||||
|
if ( false !== $key ) {
|
||||||
|
// Reset all dependencies so they must be recalculated in recurse_deps().
|
||||||
|
$this->all_queued_deps = null;
|
||||||
|
|
||||||
|
unset( $this->queue[ $key ] );
|
||||||
|
unset( $this->args[ $handle[0] ] );
|
||||||
|
} elseif ( array_key_exists( $handle[0], $this->queued_before_register ) ) {
|
||||||
|
unset( $this->queued_before_register[ $handle[0] ] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Recursively search the passed dependency tree for a handle.
|
||||||
|
*
|
||||||
|
* @since 4.0.0
|
||||||
|
*
|
||||||
|
* @param string[] $queue An array of queued _WP_Dependency handles.
|
||||||
|
* @param string $handle Name of the item. Should be unique.
|
||||||
|
* @return bool Whether the handle is found after recursively searching the dependency tree.
|
||||||
|
*/
|
||||||
|
protected function recurse_deps( $queue, $handle ) {
|
||||||
|
if ( isset( $this->all_queued_deps ) ) {
|
||||||
|
return isset( $this->all_queued_deps[ $handle ] );
|
||||||
|
}
|
||||||
|
|
||||||
|
$all_deps = array_fill_keys( $queue, true );
|
||||||
|
$queues = array();
|
||||||
|
$done = array();
|
||||||
|
|
||||||
|
while ( $queue ) {
|
||||||
|
foreach ( $queue as $queued ) {
|
||||||
|
if ( ! isset( $done[ $queued ] ) && isset( $this->registered[ $queued ] ) ) {
|
||||||
|
$deps = $this->registered[ $queued ]->deps;
|
||||||
|
if ( $deps ) {
|
||||||
|
$all_deps += array_fill_keys( $deps, true );
|
||||||
|
array_push( $queues, $deps );
|
||||||
|
}
|
||||||
|
$done[ $queued ] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$queue = array_pop( $queues );
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->all_queued_deps = $all_deps;
|
||||||
|
|
||||||
|
return isset( $this->all_queued_deps[ $handle ] );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Query the list for an item.
|
||||||
|
*
|
||||||
|
* @since 2.1.0
|
||||||
|
* @since 2.6.0 Moved from `WP_Scripts`.
|
||||||
|
*
|
||||||
|
* @param string $handle Name of the item. Should be unique.
|
||||||
|
* @param string $status Optional. Status of the item to query. Default 'registered'.
|
||||||
|
* @return bool|_WP_Dependency Found, or object Item data.
|
||||||
|
*/
|
||||||
|
public function query( $handle, $status = 'registered' ) {
|
||||||
|
switch ( $status ) {
|
||||||
|
case 'registered':
|
||||||
|
case 'scripts': // Back compat.
|
||||||
|
if ( isset( $this->registered[ $handle ] ) ) {
|
||||||
|
return $this->registered[ $handle ];
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
|
||||||
|
case 'enqueued':
|
||||||
|
case 'queue': // Back compat.
|
||||||
|
if ( in_array( $handle, $this->queue, true ) ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return $this->recurse_deps( $this->queue, $handle );
|
||||||
|
|
||||||
|
case 'to_do':
|
||||||
|
case 'to_print': // Back compat.
|
||||||
|
return in_array( $handle, $this->to_do, true );
|
||||||
|
|
||||||
|
case 'done':
|
||||||
|
case 'printed': // Back compat.
|
||||||
|
return in_array( $handle, $this->done, true );
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set item group, unless already in a lower group.
|
||||||
|
*
|
||||||
|
* @since 2.8.0
|
||||||
|
*
|
||||||
|
* @param string $handle Name of the item. Should be unique.
|
||||||
|
* @param bool $recursion Internal flag that calling function was called recursively.
|
||||||
|
* @param int|false $group Group level: level (int), no group (false).
|
||||||
|
* @return bool Not already in the group or a lower group.
|
||||||
|
*/
|
||||||
|
public function set_group( $handle, $recursion, $group ) {
|
||||||
|
$group = (int) $group;
|
||||||
|
|
||||||
|
if ( isset( $this->groups[ $handle ] ) && $this->groups[ $handle ] <= $group ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->groups[ $handle ] = $group;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,727 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Dependencies API: WP_Scripts class
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
*
|
||||||
|
* @package WordPress
|
||||||
|
* @subpackage Dependencies
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Core class used to register scripts.
|
||||||
|
*
|
||||||
|
* @since 2.1.0
|
||||||
|
*
|
||||||
|
* @see WP_Dependencies
|
||||||
|
*/
|
||||||
|
class WP_Scripts extends WP_Dependencies {
|
||||||
|
/**
|
||||||
|
* Base URL for scripts.
|
||||||
|
*
|
||||||
|
* Full URL with trailing slash.
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $base_url;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* URL of the content directory.
|
||||||
|
*
|
||||||
|
* @since 2.8.0
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $content_url;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default version string for scripts.
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $default_version;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holds handles of scripts which are enqueued in footer.
|
||||||
|
*
|
||||||
|
* @since 2.8.0
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
public $in_footer = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holds a list of script handles which will be concatenated.
|
||||||
|
*
|
||||||
|
* @since 2.8.0
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $concat = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holds a string which contains script handles and their version.
|
||||||
|
*
|
||||||
|
* @since 2.8.0
|
||||||
|
* @deprecated 3.4.0
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $concat_version = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether to perform concatenation.
|
||||||
|
*
|
||||||
|
* @since 2.8.0
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
public $do_concat = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holds HTML markup of scripts and additional data if concatenation
|
||||||
|
* is enabled.
|
||||||
|
*
|
||||||
|
* @since 2.8.0
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $print_html = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holds inline code if concatenation is enabled.
|
||||||
|
*
|
||||||
|
* @since 2.8.0
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $print_code = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holds a list of script handles which are not in the default directory
|
||||||
|
* if concatenation is enabled.
|
||||||
|
*
|
||||||
|
* Unused in core.
|
||||||
|
*
|
||||||
|
* @since 2.8.0
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $ext_handles = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holds a string which contains handles and versions of scripts which
|
||||||
|
* are not in the default directory if concatenation is enabled.
|
||||||
|
*
|
||||||
|
* Unused in core.
|
||||||
|
*
|
||||||
|
* @since 2.8.0
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $ext_version = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List of default directories.
|
||||||
|
*
|
||||||
|
* @since 2.8.0
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
public $default_dirs;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holds a string which contains the type attribute for script tag.
|
||||||
|
*
|
||||||
|
* If the active theme does not declare HTML5 support for 'script',
|
||||||
|
* then it initializes as `type='text/javascript'`.
|
||||||
|
*
|
||||||
|
* @since 5.3.0
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private $type_attr = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor.
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
*/
|
||||||
|
public function __construct() {
|
||||||
|
$this->init();
|
||||||
|
add_action( 'init', array( $this, 'init' ), 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize the class.
|
||||||
|
*
|
||||||
|
* @since 3.4.0
|
||||||
|
*/
|
||||||
|
public function init() {
|
||||||
|
if (
|
||||||
|
function_exists( 'is_admin' ) && ! is_admin()
|
||||||
|
&&
|
||||||
|
function_exists( 'current_theme_supports' ) && ! current_theme_supports( 'html5', 'script' )
|
||||||
|
) {
|
||||||
|
$this->type_attr = " type='text/javascript'";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fires when the WP_Scripts instance is initialized.
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
*
|
||||||
|
* @param WP_Scripts $wp_scripts WP_Scripts instance (passed by reference).
|
||||||
|
*/
|
||||||
|
do_action_ref_array( 'wp_default_scripts', array( &$this ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prints scripts.
|
||||||
|
*
|
||||||
|
* Prints the scripts passed to it or the print queue. Also prints all necessary dependencies.
|
||||||
|
*
|
||||||
|
* @since 2.1.0
|
||||||
|
* @since 2.8.0 Added the `$group` parameter.
|
||||||
|
*
|
||||||
|
* @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.
|
||||||
|
* @return string[] Handles of scripts that have been printed.
|
||||||
|
*/
|
||||||
|
public function print_scripts( $handles = false, $group = false ) {
|
||||||
|
return $this->do_items( $handles, $group );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prints extra scripts of a registered script.
|
||||||
|
*
|
||||||
|
* @since 2.1.0
|
||||||
|
* @since 2.8.0 Added the `$display` parameter.
|
||||||
|
* @deprecated 3.3.0
|
||||||
|
*
|
||||||
|
* @see print_extra_script()
|
||||||
|
*
|
||||||
|
* @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,
|
||||||
|
* true otherwise.
|
||||||
|
*/
|
||||||
|
public function print_scripts_l10n( $handle, $display = true ) {
|
||||||
|
_deprecated_function( __FUNCTION__, '3.3.0', 'WP_Scripts::print_extra_script()' );
|
||||||
|
return $this->print_extra_script( $handle, $display );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prints extra scripts of a registered script.
|
||||||
|
*
|
||||||
|
* @since 3.3.0
|
||||||
|
*
|
||||||
|
* @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,
|
||||||
|
* true otherwise.
|
||||||
|
*/
|
||||||
|
public function print_extra_script( $handle, $display = true ) {
|
||||||
|
$output = $this->get_data( $handle, 'data' );
|
||||||
|
if ( ! $output ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! $display ) {
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf( "<script%s id='%s-js-extra'>\n", $this->type_attr, esc_attr( $handle ) );
|
||||||
|
|
||||||
|
// CDATA is not needed for HTML 5.
|
||||||
|
if ( $this->type_attr ) {
|
||||||
|
echo "/* <![CDATA[ */\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "$output\n";
|
||||||
|
|
||||||
|
if ( $this->type_attr ) {
|
||||||
|
echo "/* ]]> */\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "</script>\n";
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Processes a script dependency.
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
* @since 2.8.0 Added the `$group` parameter.
|
||||||
|
*
|
||||||
|
* @see WP_Dependencies::do_item()
|
||||||
|
*
|
||||||
|
* @param string $handle The script's registered handle.
|
||||||
|
* @param int|false $group Optional. Group level: level (int), no groups (false).
|
||||||
|
* Default false.
|
||||||
|
* @return bool True on success, false on failure.
|
||||||
|
*/
|
||||||
|
public function do_item( $handle, $group = false ) {
|
||||||
|
if ( ! parent::do_item( $handle ) ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( 0 === $group && $this->groups[ $handle ] > 0 ) {
|
||||||
|
$this->in_footer[] = $handle;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( false === $group && in_array( $handle, $this->in_footer, true ) ) {
|
||||||
|
$this->in_footer = array_diff( $this->in_footer, (array) $handle );
|
||||||
|
}
|
||||||
|
|
||||||
|
$obj = $this->registered[ $handle ];
|
||||||
|
|
||||||
|
if ( null === $obj->ver ) {
|
||||||
|
$ver = '';
|
||||||
|
} else {
|
||||||
|
$ver = $obj->ver ? $obj->ver : $this->default_version;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isset( $this->args[ $handle ] ) ) {
|
||||||
|
$ver = $ver ? $ver . '&' . $this->args[ $handle ] : $this->args[ $handle ];
|
||||||
|
}
|
||||||
|
|
||||||
|
$src = $obj->src;
|
||||||
|
$cond_before = '';
|
||||||
|
$cond_after = '';
|
||||||
|
$conditional = isset( $obj->extra['conditional'] ) ? $obj->extra['conditional'] : '';
|
||||||
|
|
||||||
|
if ( $conditional ) {
|
||||||
|
$cond_before = "<!--[if {$conditional}]>\n";
|
||||||
|
$cond_after = "<![endif]-->\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$before_handle = $this->print_inline_script( $handle, 'before', false );
|
||||||
|
$after_handle = $this->print_inline_script( $handle, 'after', false );
|
||||||
|
|
||||||
|
if ( $before_handle ) {
|
||||||
|
$before_handle = sprintf( "<script%s id='%s-js-before'>\n%s\n</script>\n", $this->type_attr, esc_attr( $handle ), $before_handle );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $after_handle ) {
|
||||||
|
$after_handle = sprintf( "<script%s id='%s-js-after'>\n%s\n</script>\n", $this->type_attr, esc_attr( $handle ), $after_handle );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $before_handle || $after_handle ) {
|
||||||
|
$inline_script_tag = $cond_before . $before_handle . $after_handle . $cond_after;
|
||||||
|
} else {
|
||||||
|
$inline_script_tag = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Prevent concatenation of scripts if the text domain is defined
|
||||||
|
* to ensure the dependency order is respected.
|
||||||
|
*/
|
||||||
|
$translations_stop_concat = ! empty( $obj->textdomain );
|
||||||
|
|
||||||
|
$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 );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $this->do_concat ) {
|
||||||
|
/**
|
||||||
|
* Filters the script loader source.
|
||||||
|
*
|
||||||
|
* @since 2.2.0
|
||||||
|
*
|
||||||
|
* @param string $src Script loader source path.
|
||||||
|
* @param string $handle Script handle.
|
||||||
|
*/
|
||||||
|
$srce = apply_filters( 'script_loader_src', $src, $handle );
|
||||||
|
|
||||||
|
if ( $this->in_default_dir( $srce ) && ( $before_handle || $after_handle || $translations_stop_concat ) ) {
|
||||||
|
$this->do_concat = false;
|
||||||
|
|
||||||
|
// 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 ) {
|
||||||
|
$this->print_code .= $this->print_extra_script( $handle, false );
|
||||||
|
$this->concat .= "$handle,";
|
||||||
|
$this->concat_version .= "$handle$ver";
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
$this->ext_handles .= "$handle,";
|
||||||
|
$this->ext_version .= "$handle$ver";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$has_conditional_data = $conditional && $this->get_data( $handle, 'data' );
|
||||||
|
|
||||||
|
if ( $has_conditional_data ) {
|
||||||
|
echo $cond_before;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->print_extra_script( $handle );
|
||||||
|
|
||||||
|
if ( $has_conditional_data ) {
|
||||||
|
echo $cond_after;
|
||||||
|
}
|
||||||
|
|
||||||
|
// A single item may alias a set of items, by having dependencies, but no source.
|
||||||
|
if ( ! $src ) {
|
||||||
|
if ( $inline_script_tag ) {
|
||||||
|
if ( $this->do_concat ) {
|
||||||
|
$this->print_html .= $inline_script_tag;
|
||||||
|
} else {
|
||||||
|
echo $inline_script_tag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! preg_match( '|^(https?:)?//|', $src ) && ! ( $this->content_url && 0 === strpos( $src, $this->content_url ) ) ) {
|
||||||
|
$src = $this->base_url . $src;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! empty( $ver ) ) {
|
||||||
|
$src = add_query_arg( 'ver', $ver, $src );
|
||||||
|
}
|
||||||
|
|
||||||
|
/** This filter is documented in wp-includes/class-wp-scripts.php */
|
||||||
|
$src = esc_url( apply_filters( 'script_loader_src', $src, $handle ) );
|
||||||
|
|
||||||
|
if ( ! $src ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$tag = $translations . $cond_before . $before_handle;
|
||||||
|
$tag .= sprintf( "<script%s src='%s' id='%s-js'></script>\n", $this->type_attr, $src, esc_attr( $handle ) );
|
||||||
|
$tag .= $after_handle . $cond_after;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filters the HTML script tag of an enqueued script.
|
||||||
|
*
|
||||||
|
* @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 ) {
|
||||||
|
$this->print_html .= $tag;
|
||||||
|
} else {
|
||||||
|
echo $tag;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds extra code to a registered script.
|
||||||
|
*
|
||||||
|
* @since 4.5.0
|
||||||
|
*
|
||||||
|
* @param string $handle Name of the script to add the inline script to.
|
||||||
|
* Must be lowercase.
|
||||||
|
* @param string $data String containing the JavaScript to be added.
|
||||||
|
* @param string $position Optional. Whether to add the inline script
|
||||||
|
* before the handle or after. Default 'after'.
|
||||||
|
* @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 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prints inline scripts registered for a specific handle.
|
||||||
|
*
|
||||||
|
* @since 4.5.0
|
||||||
|
*
|
||||||
|
* @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'.
|
||||||
|
* @param bool $display Optional. Whether to print the script
|
||||||
|
* instead of just returning it. Default true.
|
||||||
|
* @return string|false Script on success, false otherwise.
|
||||||
|
*/
|
||||||
|
public function print_inline_script( $handle, $position = 'after', $display = true ) {
|
||||||
|
$output = $this->get_data( $handle, $position );
|
||||||
|
|
||||||
|
if ( empty( $output ) ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$output = trim( implode( "\n", $output ), "\n" );
|
||||||
|
|
||||||
|
if ( $display ) {
|
||||||
|
printf( "<script%s id='%s-js-%s'>\n%s\n</script>\n", $this->type_attr, esc_attr( $handle ), esc_attr( $position ), $output );
|
||||||
|
}
|
||||||
|
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Localizes a script, only if the script has already been added.
|
||||||
|
*
|
||||||
|
* @since 2.1.0
|
||||||
|
*
|
||||||
|
* @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.
|
||||||
|
*/
|
||||||
|
public function localize( $handle, $object_name, $l10n ) {
|
||||||
|
if ( 'jquery' === $handle ) {
|
||||||
|
$handle = 'jquery-core';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( is_array( $l10n ) && isset( $l10n['l10n_print_after'] ) ) { // back compat, preserve the code in 'l10n_print_after' if present.
|
||||||
|
$after = $l10n['l10n_print_after'];
|
||||||
|
unset( $l10n['l10n_print_after'] );
|
||||||
|
}
|
||||||
|
|
||||||
|
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 ( false === $l10n ) {
|
||||||
|
// This should really not be needed, but is necessary for backward compatibility.
|
||||||
|
$l10n = array( $l10n );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( is_string( $l10n ) ) {
|
||||||
|
$l10n = html_entity_decode( $l10n, ENT_QUOTES, 'UTF-8' );
|
||||||
|
} elseif ( is_array( $l10n ) ) {
|
||||||
|
foreach ( $l10n as $key => $value ) {
|
||||||
|
if ( ! is_scalar( $value ) ) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$l10n[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$script = "var $object_name = " . wp_json_encode( $l10n ) . ';';
|
||||||
|
|
||||||
|
if ( ! empty( $after ) ) {
|
||||||
|
$script .= "\n$after;";
|
||||||
|
}
|
||||||
|
|
||||||
|
$data = $this->get_data( $handle, 'data' );
|
||||||
|
|
||||||
|
if ( ! empty( $data ) ) {
|
||||||
|
$script = "$data\n$script";
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->add_data( $handle, 'data', $script );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets handle group.
|
||||||
|
*
|
||||||
|
* @since 2.8.0
|
||||||
|
*
|
||||||
|
* @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.
|
||||||
|
* @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.
|
||||||
|
*/
|
||||||
|
public function set_group( $handle, $recursion, $group = false ) {
|
||||||
|
if ( isset( $this->registered[ $handle ]->args ) && 1 === $this->registered[ $handle ]->args ) {
|
||||||
|
$grp = 1;
|
||||||
|
} else {
|
||||||
|
$grp = (int) $this->get_data( $handle, 'group' );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( false !== $group && $grp > $group ) {
|
||||||
|
$grp = $group;
|
||||||
|
}
|
||||||
|
|
||||||
|
return parent::set_group( $handle, $recursion, $grp );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets a translation textdomain.
|
||||||
|
*
|
||||||
|
* @since 5.0.0
|
||||||
|
* @since 5.1.0 The `$domain` parameter was made optional.
|
||||||
|
*
|
||||||
|
* @param string $handle Name of the script to register a translation domain to.
|
||||||
|
* @param string $domain Optional. Text domain. Default 'default'.
|
||||||
|
* @param string $path Optional. The full file path to the directory containing translation files.
|
||||||
|
* @return bool True if the text domain was registered, false if not.
|
||||||
|
*/
|
||||||
|
public function set_translations( $handle, $domain = 'default', $path = null ) {
|
||||||
|
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';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $obj->set_translations( $domain, $path );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prints translations set for a specific handle.
|
||||||
|
*
|
||||||
|
* @since 5.0.0
|
||||||
|
*
|
||||||
|
* @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.
|
||||||
|
* @return string|false Script on success, false otherwise.
|
||||||
|
*/
|
||||||
|
public function print_translations( $handle, $display = true ) {
|
||||||
|
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 ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$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;
|
||||||
|
|
||||||
|
if ( $display ) {
|
||||||
|
printf( "<script%s id='%s-js-translations'>\n%s\n</script>\n", $this->type_attr, esc_attr( $handle ), $output );
|
||||||
|
}
|
||||||
|
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines script dependencies.
|
||||||
|
*
|
||||||
|
* @since 2.1.0
|
||||||
|
*
|
||||||
|
* @see WP_Dependencies::all_deps()
|
||||||
|
*
|
||||||
|
* @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.
|
||||||
|
* @return bool True on success, false on failure.
|
||||||
|
*/
|
||||||
|
public function all_deps( $handles, $recursion = false, $group = false ) {
|
||||||
|
$r = parent::all_deps( $handles, $recursion, $group );
|
||||||
|
if ( ! $recursion ) {
|
||||||
|
/**
|
||||||
|
* Filters the list of script dependencies left to print.
|
||||||
|
*
|
||||||
|
* @since 2.3.0
|
||||||
|
*
|
||||||
|
* @param string[] $to_do An array of script dependency handles.
|
||||||
|
*/
|
||||||
|
$this->to_do = apply_filters( 'print_scripts_array', $this->to_do );
|
||||||
|
}
|
||||||
|
return $r;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Processes items and dependencies for the head group.
|
||||||
|
*
|
||||||
|
* @since 2.8.0
|
||||||
|
*
|
||||||
|
* @see WP_Dependencies::do_items()
|
||||||
|
*
|
||||||
|
* @return string[] Handles of items that have been processed.
|
||||||
|
*/
|
||||||
|
public function do_head_items() {
|
||||||
|
$this->do_items( false, 0 );
|
||||||
|
return $this->done;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Processes items and dependencies for the footer group.
|
||||||
|
*
|
||||||
|
* @since 2.8.0
|
||||||
|
*
|
||||||
|
* @see WP_Dependencies::do_items()
|
||||||
|
*
|
||||||
|
* @return string[] Handles of items that have been processed.
|
||||||
|
*/
|
||||||
|
public function do_footer_items() {
|
||||||
|
$this->do_items( false, 1 );
|
||||||
|
return $this->done;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether a handle's source is in a default directory.
|
||||||
|
*
|
||||||
|
* @since 2.8.0
|
||||||
|
*
|
||||||
|
* @param string $src The source of the enqueued script.
|
||||||
|
* @return bool True if found, false if not.
|
||||||
|
*/
|
||||||
|
public function in_default_dir( $src ) {
|
||||||
|
if ( ! $this->default_dirs ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( 0 === strpos( $src, '/' . WPINC . '/js/l10n' ) ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ( (array) $this->default_dirs as $test ) {
|
||||||
|
if ( 0 === strpos( $src, $test ) ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resets class properties.
|
||||||
|
*
|
||||||
|
* @since 2.8.0
|
||||||
|
*/
|
||||||
|
public function reset() {
|
||||||
|
$this->do_concat = false;
|
||||||
|
$this->print_code = '';
|
||||||
|
$this->concat = '';
|
||||||
|
$this->concat_version = '';
|
||||||
|
$this->print_html = '';
|
||||||
|
$this->ext_version = '';
|
||||||
|
$this->ext_handles = '';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,464 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Dependencies API: WP_Styles class
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
*
|
||||||
|
* @package WordPress
|
||||||
|
* @subpackage Dependencies
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Core class used to register styles.
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
*
|
||||||
|
* @see WP_Dependencies
|
||||||
|
*/
|
||||||
|
class WP_Styles extends WP_Dependencies {
|
||||||
|
/**
|
||||||
|
* Base URL for styles.
|
||||||
|
*
|
||||||
|
* Full URL with trailing slash.
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $base_url;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* URL of the content directory.
|
||||||
|
*
|
||||||
|
* @since 2.8.0
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $content_url;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default version string for stylesheets.
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $default_version;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The current text direction.
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $text_direction = 'ltr';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holds a list of style handles which will be concatenated.
|
||||||
|
*
|
||||||
|
* @since 2.8.0
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $concat = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holds a string which contains style handles and their version.
|
||||||
|
*
|
||||||
|
* @since 2.8.0
|
||||||
|
* @deprecated 3.4.0
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $concat_version = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether to perform concatenation.
|
||||||
|
*
|
||||||
|
* @since 2.8.0
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
public $do_concat = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holds HTML markup of styles and additional data if concatenation
|
||||||
|
* is enabled.
|
||||||
|
*
|
||||||
|
* @since 2.8.0
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $print_html = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holds inline styles if concatenation is enabled.
|
||||||
|
*
|
||||||
|
* @since 3.3.0
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $print_code = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List of default directories.
|
||||||
|
*
|
||||||
|
* @since 2.8.0
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
public $default_dirs;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holds a string which contains the type attribute for style tag.
|
||||||
|
*
|
||||||
|
* If the active theme does not declare HTML5 support for 'style',
|
||||||
|
* then it initializes as `type='text/css'`.
|
||||||
|
*
|
||||||
|
* @since 5.3.0
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private $type_attr = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor.
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
*/
|
||||||
|
public function __construct() {
|
||||||
|
if (
|
||||||
|
function_exists( 'is_admin' ) && ! is_admin()
|
||||||
|
&&
|
||||||
|
function_exists( 'current_theme_supports' ) && ! current_theme_supports( 'html5', 'style' )
|
||||||
|
) {
|
||||||
|
$this->type_attr = " type='text/css'";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fires when the WP_Styles instance is initialized.
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
*
|
||||||
|
* @param WP_Styles $wp_styles WP_Styles instance (passed by reference).
|
||||||
|
*/
|
||||||
|
do_action_ref_array( 'wp_default_styles', array( &$this ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Processes a style dependency.
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
* @since 5.5.0 Added the `$group` parameter.
|
||||||
|
*
|
||||||
|
* @see WP_Dependencies::do_item()
|
||||||
|
*
|
||||||
|
* @param string $handle The style's registered handle.
|
||||||
|
* @param int|false $group Optional. Group level: level (int), no groups (false).
|
||||||
|
* Default false.
|
||||||
|
* @return bool True on success, false on failure.
|
||||||
|
*/
|
||||||
|
public function do_item( $handle, $group = false ) {
|
||||||
|
if ( ! parent::do_item( $handle ) ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$obj = $this->registered[ $handle ];
|
||||||
|
|
||||||
|
if ( null === $obj->ver ) {
|
||||||
|
$ver = '';
|
||||||
|
} else {
|
||||||
|
$ver = $obj->ver ? $obj->ver : $this->default_version;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isset( $this->args[ $handle ] ) ) {
|
||||||
|
$ver = $ver ? $ver . '&' . $this->args[ $handle ] : $this->args[ $handle ];
|
||||||
|
}
|
||||||
|
|
||||||
|
$src = $obj->src;
|
||||||
|
$cond_before = '';
|
||||||
|
$cond_after = '';
|
||||||
|
$conditional = isset( $obj->extra['conditional'] ) ? $obj->extra['conditional'] : '';
|
||||||
|
|
||||||
|
if ( $conditional ) {
|
||||||
|
$cond_before = "<!--[if {$conditional}]>\n";
|
||||||
|
$cond_after = "<![endif]-->\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$inline_style = $this->print_inline_style( $handle, false );
|
||||||
|
|
||||||
|
if ( $inline_style ) {
|
||||||
|
$inline_style_tag = sprintf(
|
||||||
|
"<style id='%s-inline-css'%s>\n%s\n</style>\n",
|
||||||
|
esc_attr( $handle ),
|
||||||
|
$this->type_attr,
|
||||||
|
$inline_style
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$inline_style_tag = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $this->do_concat ) {
|
||||||
|
if ( $this->in_default_dir( $src ) && ! $conditional && ! isset( $obj->extra['alt'] ) ) {
|
||||||
|
$this->concat .= "$handle,";
|
||||||
|
$this->concat_version .= "$handle$ver";
|
||||||
|
|
||||||
|
$this->print_code .= $inline_style;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isset( $obj->args ) ) {
|
||||||
|
$media = esc_attr( $obj->args );
|
||||||
|
} else {
|
||||||
|
$media = 'all';
|
||||||
|
}
|
||||||
|
|
||||||
|
// A single item may alias a set of items, by having dependencies, but no source.
|
||||||
|
if ( ! $src ) {
|
||||||
|
if ( $inline_style_tag ) {
|
||||||
|
if ( $this->do_concat ) {
|
||||||
|
$this->print_html .= $inline_style_tag;
|
||||||
|
} else {
|
||||||
|
echo $inline_style_tag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$href = $this->_css_href( $src, $ver, $handle );
|
||||||
|
if ( ! $href ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$rel = isset( $obj->extra['alt'] ) && $obj->extra['alt'] ? 'alternate stylesheet' : 'stylesheet';
|
||||||
|
$title = isset( $obj->extra['title'] ) ? sprintf( "title='%s'", esc_attr( $obj->extra['title'] ) ) : '';
|
||||||
|
|
||||||
|
$tag = sprintf(
|
||||||
|
"<link rel='%s' id='%s-css' %s href='%s'%s media='%s' />\n",
|
||||||
|
$rel,
|
||||||
|
$handle,
|
||||||
|
$title,
|
||||||
|
$href,
|
||||||
|
$this->type_attr,
|
||||||
|
$media
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filters the HTML link tag of an enqueued style.
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
* @since 4.3.0 Introduced the `$href` parameter.
|
||||||
|
* @since 4.5.0 Introduced the `$media` parameter.
|
||||||
|
*
|
||||||
|
* @param string $tag The link tag for the enqueued style.
|
||||||
|
* @param string $handle The style's registered handle.
|
||||||
|
* @param string $href The stylesheet's source URL.
|
||||||
|
* @param string $media The stylesheet's media attribute.
|
||||||
|
*/
|
||||||
|
$tag = apply_filters( 'style_loader_tag', $tag, $handle, $href, $media );
|
||||||
|
|
||||||
|
if ( 'rtl' === $this->text_direction && isset( $obj->extra['rtl'] ) && $obj->extra['rtl'] ) {
|
||||||
|
if ( is_bool( $obj->extra['rtl'] ) || 'replace' === $obj->extra['rtl'] ) {
|
||||||
|
$suffix = isset( $obj->extra['suffix'] ) ? $obj->extra['suffix'] : '';
|
||||||
|
$rtl_href = str_replace( "{$suffix}.css", "-rtl{$suffix}.css", $this->_css_href( $src, $ver, "$handle-rtl" ) );
|
||||||
|
} else {
|
||||||
|
$rtl_href = $this->_css_href( $obj->extra['rtl'], $ver, "$handle-rtl" );
|
||||||
|
}
|
||||||
|
|
||||||
|
$rtl_tag = sprintf(
|
||||||
|
"<link rel='%s' id='%s-rtl-css' %s href='%s'%s media='%s' />\n",
|
||||||
|
$rel,
|
||||||
|
$handle,
|
||||||
|
$title,
|
||||||
|
$rtl_href,
|
||||||
|
$this->type_attr,
|
||||||
|
$media
|
||||||
|
);
|
||||||
|
|
||||||
|
/** This filter is documented in wp-includes/class-wp-styles.php */
|
||||||
|
$rtl_tag = apply_filters( 'style_loader_tag', $rtl_tag, $handle, $rtl_href, $media );
|
||||||
|
|
||||||
|
if ( 'replace' === $obj->extra['rtl'] ) {
|
||||||
|
$tag = $rtl_tag;
|
||||||
|
} else {
|
||||||
|
$tag .= $rtl_tag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $this->do_concat ) {
|
||||||
|
$this->print_html .= $cond_before;
|
||||||
|
$this->print_html .= $tag;
|
||||||
|
if ( $inline_style_tag ) {
|
||||||
|
$this->print_html .= $inline_style_tag;
|
||||||
|
}
|
||||||
|
$this->print_html .= $cond_after;
|
||||||
|
} else {
|
||||||
|
echo $cond_before;
|
||||||
|
echo $tag;
|
||||||
|
$this->print_inline_style( $handle );
|
||||||
|
echo $cond_after;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds extra CSS styles to a registered stylesheet.
|
||||||
|
*
|
||||||
|
* @since 3.3.0
|
||||||
|
*
|
||||||
|
* @param string $handle The style's registered handle.
|
||||||
|
* @param string $code String containing the CSS styles to be added.
|
||||||
|
* @return bool True on success, false on failure.
|
||||||
|
*/
|
||||||
|
public function add_inline_style( $handle, $code ) {
|
||||||
|
if ( ! $code ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$after = $this->get_data( $handle, 'after' );
|
||||||
|
if ( ! $after ) {
|
||||||
|
$after = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
$after[] = $code;
|
||||||
|
|
||||||
|
return $this->add_data( $handle, 'after', $after );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prints extra CSS styles of a registered stylesheet.
|
||||||
|
*
|
||||||
|
* @since 3.3.0
|
||||||
|
*
|
||||||
|
* @param string $handle The style's registered handle.
|
||||||
|
* @param bool $display Optional. Whether to print the inline style
|
||||||
|
* instead of just returning it. Default true.
|
||||||
|
* @return string|bool False if no data exists, inline styles if `$display` is true,
|
||||||
|
* true otherwise.
|
||||||
|
*/
|
||||||
|
public function print_inline_style( $handle, $display = true ) {
|
||||||
|
$output = $this->get_data( $handle, 'after' );
|
||||||
|
|
||||||
|
if ( empty( $output ) ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$output = implode( "\n", $output );
|
||||||
|
|
||||||
|
if ( ! $display ) {
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf(
|
||||||
|
"<style id='%s-inline-css'%s>\n%s\n</style>\n",
|
||||||
|
esc_attr( $handle ),
|
||||||
|
$this->type_attr,
|
||||||
|
$output
|
||||||
|
);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines style dependencies.
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
*
|
||||||
|
* @see WP_Dependencies::all_deps()
|
||||||
|
*
|
||||||
|
* @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.
|
||||||
|
* @return bool True on success, false on failure.
|
||||||
|
*/
|
||||||
|
public function all_deps( $handles, $recursion = false, $group = false ) {
|
||||||
|
$r = parent::all_deps( $handles, $recursion, $group );
|
||||||
|
if ( ! $recursion ) {
|
||||||
|
/**
|
||||||
|
* Filters the array of enqueued styles before processing for output.
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
*
|
||||||
|
* @param string[] $to_do The list of enqueued style handles about to be processed.
|
||||||
|
*/
|
||||||
|
$this->to_do = apply_filters( 'print_styles_array', $this->to_do );
|
||||||
|
}
|
||||||
|
return $r;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates an enqueued style's fully-qualified URL.
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
*
|
||||||
|
* @param string $src The source of the enqueued style.
|
||||||
|
* @param string $ver The version of the enqueued style.
|
||||||
|
* @param string $handle The style's registered handle.
|
||||||
|
* @return string Style's fully-qualified URL.
|
||||||
|
*/
|
||||||
|
public function _css_href( $src, $ver, $handle ) {
|
||||||
|
if ( ! is_bool( $src ) && ! preg_match( '|^(https?:)?//|', $src ) && ! ( $this->content_url && 0 === strpos( $src, $this->content_url ) ) ) {
|
||||||
|
$src = $this->base_url . $src;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! empty( $ver ) ) {
|
||||||
|
$src = add_query_arg( 'ver', $ver, $src );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filters an enqueued style's fully-qualified URL.
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
*
|
||||||
|
* @param string $src The source URL of the enqueued style.
|
||||||
|
* @param string $handle The style's registered handle.
|
||||||
|
*/
|
||||||
|
$src = apply_filters( 'style_loader_src', $src, $handle );
|
||||||
|
return esc_url( $src );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether a handle's source is in a default directory.
|
||||||
|
*
|
||||||
|
* @since 2.8.0
|
||||||
|
*
|
||||||
|
* @param string $src The source of the enqueued style.
|
||||||
|
* @return bool True if found, false if not.
|
||||||
|
*/
|
||||||
|
public function in_default_dir( $src ) {
|
||||||
|
if ( ! $this->default_dirs ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ( (array) $this->default_dirs as $test ) {
|
||||||
|
if ( 0 === strpos( $src, $test ) ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Processes items and dependencies for the footer group.
|
||||||
|
*
|
||||||
|
* HTML 5 allows styles in the body, grab late enqueued items and output them in the footer.
|
||||||
|
*
|
||||||
|
* @since 3.3.0
|
||||||
|
*
|
||||||
|
* @see WP_Dependencies::do_items()
|
||||||
|
*
|
||||||
|
* @return string[] Handles of items that have been processed.
|
||||||
|
*/
|
||||||
|
public function do_footer_items() {
|
||||||
|
$this->do_items( false, 1 );
|
||||||
|
return $this->done;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resets class properties.
|
||||||
|
*
|
||||||
|
* @since 3.3.0
|
||||||
|
*/
|
||||||
|
public function reset() {
|
||||||
|
$this->do_concat = false;
|
||||||
|
$this->concat = '';
|
||||||
|
$this->concat_version = '';
|
||||||
|
$this->print_html = '';
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,493 +2,13 @@
|
||||||
/**
|
/**
|
||||||
* Dependencies API: WP_Dependencies base class
|
* Dependencies API: WP_Dependencies base class
|
||||||
*
|
*
|
||||||
* @since 2.6.0
|
* This file is deprecated, use 'wp-includes/class-wp-dependencies.php' instead.
|
||||||
*
|
*
|
||||||
|
* @deprecated 6.1.0
|
||||||
* @package WordPress
|
* @package WordPress
|
||||||
* @subpackage Dependencies
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
_deprecated_file( basename( __FILE__ ), '6.1.0', WPINC . '/class-wp-dependencies.php' );
|
||||||
* Core base class extended to register items.
|
|
||||||
*
|
|
||||||
* @since 2.6.0
|
|
||||||
*
|
|
||||||
* @see _WP_Dependency
|
|
||||||
*/
|
|
||||||
#[AllowDynamicProperties]
|
|
||||||
class WP_Dependencies {
|
|
||||||
/**
|
|
||||||
* An array of all registered dependencies keyed by handle.
|
|
||||||
*
|
|
||||||
* @since 2.6.8
|
|
||||||
*
|
|
||||||
* @var _WP_Dependency[]
|
|
||||||
*/
|
|
||||||
public $registered = array();
|
|
||||||
|
|
||||||
/**
|
/** WP_Dependencies class */
|
||||||
* An array of handles of queued dependencies.
|
require_once ABSPATH . WPINC . '/class-wp-dependencies.php';
|
||||||
*
|
|
||||||
* @since 2.6.8
|
|
||||||
*
|
|
||||||
* @var string[]
|
|
||||||
*/
|
|
||||||
public $queue = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An array of handles of dependencies to queue.
|
|
||||||
*
|
|
||||||
* @since 2.6.0
|
|
||||||
*
|
|
||||||
* @var string[]
|
|
||||||
*/
|
|
||||||
public $to_do = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An array of handles of dependencies already queued.
|
|
||||||
*
|
|
||||||
* @since 2.6.0
|
|
||||||
*
|
|
||||||
* @var string[]
|
|
||||||
*/
|
|
||||||
public $done = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An array of additional arguments passed when a handle is registered.
|
|
||||||
*
|
|
||||||
* Arguments are appended to the item query string.
|
|
||||||
*
|
|
||||||
* @since 2.6.0
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
*/
|
|
||||||
public $args = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An array of dependency groups to enqueue.
|
|
||||||
*
|
|
||||||
* Each entry is keyed by handle and represents the integer group level or boolean
|
|
||||||
* false if the handle has no group.
|
|
||||||
*
|
|
||||||
* @since 2.8.0
|
|
||||||
*
|
|
||||||
* @var (int|false)[]
|
|
||||||
*/
|
|
||||||
public $groups = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A handle group to enqueue.
|
|
||||||
*
|
|
||||||
* @since 2.8.0
|
|
||||||
*
|
|
||||||
* @deprecated 4.5.0
|
|
||||||
* @var int
|
|
||||||
*/
|
|
||||||
public $group = 0;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Cached lookup array of flattened queued items and dependencies.
|
|
||||||
*
|
|
||||||
* @since 5.4.0
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
*/
|
|
||||||
private $all_queued_deps;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* List of assets enqueued before details were registered.
|
|
||||||
*
|
|
||||||
* @since 5.9.0
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
*/
|
|
||||||
private $queued_before_register = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Processes the items and dependencies.
|
|
||||||
*
|
|
||||||
* Processes the items passed to it or the queue, and their dependencies.
|
|
||||||
*
|
|
||||||
* @since 2.6.0
|
|
||||||
* @since 2.8.0 Added the `$group` parameter.
|
|
||||||
*
|
|
||||||
* @param string|string[]|false $handles Optional. Items to be processed: queue (false),
|
|
||||||
* single item (string), or multiple items (array of strings).
|
|
||||||
* Default false.
|
|
||||||
* @param int|false $group Optional. Group level: level (int), no group (false).
|
|
||||||
* @return string[] Array of handles of items that have been processed.
|
|
||||||
*/
|
|
||||||
public function do_items( $handles = false, $group = false ) {
|
|
||||||
/*
|
|
||||||
* If nothing is passed, print the queue. If a string is passed,
|
|
||||||
* print that item. If an array is passed, print those items.
|
|
||||||
*/
|
|
||||||
$handles = false === $handles ? $this->queue : (array) $handles;
|
|
||||||
$this->all_deps( $handles );
|
|
||||||
|
|
||||||
foreach ( $this->to_do as $key => $handle ) {
|
|
||||||
if ( ! in_array( $handle, $this->done, true ) && isset( $this->registered[ $handle ] ) ) {
|
|
||||||
/*
|
|
||||||
* Attempt to process the item. If successful,
|
|
||||||
* add the handle to the done array.
|
|
||||||
*
|
|
||||||
* Unset the item from the to_do array.
|
|
||||||
*/
|
|
||||||
if ( $this->do_item( $handle, $group ) ) {
|
|
||||||
$this->done[] = $handle;
|
|
||||||
}
|
|
||||||
|
|
||||||
unset( $this->to_do[ $key ] );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->done;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Processes a dependency.
|
|
||||||
*
|
|
||||||
* @since 2.6.0
|
|
||||||
* @since 5.5.0 Added the `$group` parameter.
|
|
||||||
*
|
|
||||||
* @param string $handle Name of the item. Should be unique.
|
|
||||||
* @param int|false $group Optional. Group level: level (int), no group (false).
|
|
||||||
* Default false.
|
|
||||||
* @return bool True on success, false if not set.
|
|
||||||
*/
|
|
||||||
public function do_item( $handle, $group = false ) {
|
|
||||||
return isset( $this->registered[ $handle ] );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Determines dependencies.
|
|
||||||
*
|
|
||||||
* Recursively builds an array of items to process taking
|
|
||||||
* dependencies into account. Does NOT catch infinite loops.
|
|
||||||
*
|
|
||||||
* @since 2.1.0
|
|
||||||
* @since 2.6.0 Moved from `WP_Scripts`.
|
|
||||||
* @since 2.8.0 Added the `$group` parameter.
|
|
||||||
*
|
|
||||||
* @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 group (false).
|
|
||||||
* Default false.
|
|
||||||
* @return bool True on success, false on failure.
|
|
||||||
*/
|
|
||||||
public function all_deps( $handles, $recursion = false, $group = false ) {
|
|
||||||
$handles = (array) $handles;
|
|
||||||
if ( ! $handles ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ( $handles as $handle ) {
|
|
||||||
$handle_parts = explode( '?', $handle );
|
|
||||||
$handle = $handle_parts[0];
|
|
||||||
$queued = in_array( $handle, $this->to_do, true );
|
|
||||||
|
|
||||||
if ( in_array( $handle, $this->done, true ) ) { // Already done.
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
$moved = $this->set_group( $handle, $recursion, $group );
|
|
||||||
$new_group = $this->groups[ $handle ];
|
|
||||||
|
|
||||||
if ( $queued && ! $moved ) { // Already queued and in the right group.
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
$keep_going = true;
|
|
||||||
if ( ! isset( $this->registered[ $handle ] ) ) {
|
|
||||||
$keep_going = false; // Item doesn't exist.
|
|
||||||
} elseif ( $this->registered[ $handle ]->deps && array_diff( $this->registered[ $handle ]->deps, array_keys( $this->registered ) ) ) {
|
|
||||||
$keep_going = false; // Item requires dependencies that don't exist.
|
|
||||||
} elseif ( $this->registered[ $handle ]->deps && ! $this->all_deps( $this->registered[ $handle ]->deps, true, $new_group ) ) {
|
|
||||||
$keep_going = false; // Item requires dependencies that don't exist.
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ! $keep_going ) { // Either item or its dependencies don't exist.
|
|
||||||
if ( $recursion ) {
|
|
||||||
return false; // Abort this branch.
|
|
||||||
} else {
|
|
||||||
continue; // We're at the top level. Move on to the next one.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( $queued ) { // Already grabbed it and its dependencies.
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( isset( $handle_parts[1] ) ) {
|
|
||||||
$this->args[ $handle ] = $handle_parts[1];
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->to_do[] = $handle;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Register an item.
|
|
||||||
*
|
|
||||||
* Registers the item if no item of that name already exists.
|
|
||||||
*
|
|
||||||
* @since 2.1.0
|
|
||||||
* @since 2.6.0 Moved from `WP_Scripts`.
|
|
||||||
*
|
|
||||||
* @param string $handle Name of the item. Should be unique.
|
|
||||||
* @param string|bool $src Full URL of the item, or path of the item relative
|
|
||||||
* to the WordPress root directory. If source is set to false,
|
|
||||||
* item is an alias of other items it depends on.
|
|
||||||
* @param string[] $deps Optional. An array of registered item handles this item depends on.
|
|
||||||
* Default empty array.
|
|
||||||
* @param string|bool|null $ver Optional. String specifying item version number, if it has one,
|
|
||||||
* which is added to the URL as a query string for cache busting purposes.
|
|
||||||
* If version is set to false, a version number is automatically added
|
|
||||||
* equal to current installed WordPress version.
|
|
||||||
* If set to null, no version is added.
|
|
||||||
* @param mixed $args Optional. Custom property of the item. NOT the class property $args.
|
|
||||||
* Examples: $media, $in_footer.
|
|
||||||
* @return bool Whether the item has been registered. True on success, false on failure.
|
|
||||||
*/
|
|
||||||
public function add( $handle, $src, $deps = array(), $ver = false, $args = null ) {
|
|
||||||
if ( isset( $this->registered[ $handle ] ) ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
$this->registered[ $handle ] = new _WP_Dependency( $handle, $src, $deps, $ver, $args );
|
|
||||||
|
|
||||||
// If the item was enqueued before the details were registered, enqueue it now.
|
|
||||||
if ( array_key_exists( $handle, $this->queued_before_register ) ) {
|
|
||||||
if ( ! is_null( $this->queued_before_register[ $handle ] ) ) {
|
|
||||||
$this->enqueue( $handle . '?' . $this->queued_before_register[ $handle ] );
|
|
||||||
} else {
|
|
||||||
$this->enqueue( $handle );
|
|
||||||
}
|
|
||||||
|
|
||||||
unset( $this->queued_before_register[ $handle ] );
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add extra item data.
|
|
||||||
*
|
|
||||||
* Adds data to a registered item.
|
|
||||||
*
|
|
||||||
* @since 2.6.0
|
|
||||||
*
|
|
||||||
* @param string $handle Name of the item. Should be unique.
|
|
||||||
* @param string $key The data key.
|
|
||||||
* @param mixed $value The data value.
|
|
||||||
* @return bool True on success, false on failure.
|
|
||||||
*/
|
|
||||||
public function add_data( $handle, $key, $value ) {
|
|
||||||
if ( ! isset( $this->registered[ $handle ] ) ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->registered[ $handle ]->add_data( $key, $value );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get extra item data.
|
|
||||||
*
|
|
||||||
* Gets data associated with a registered item.
|
|
||||||
*
|
|
||||||
* @since 3.3.0
|
|
||||||
*
|
|
||||||
* @param string $handle Name of the item. Should be unique.
|
|
||||||
* @param string $key The data key.
|
|
||||||
* @return mixed Extra item data (string), false otherwise.
|
|
||||||
*/
|
|
||||||
public function get_data( $handle, $key ) {
|
|
||||||
if ( ! isset( $this->registered[ $handle ] ) ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ! isset( $this->registered[ $handle ]->extra[ $key ] ) ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->registered[ $handle ]->extra[ $key ];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Un-register an item or items.
|
|
||||||
*
|
|
||||||
* @since 2.1.0
|
|
||||||
* @since 2.6.0 Moved from `WP_Scripts`.
|
|
||||||
*
|
|
||||||
* @param string|string[] $handles Item handle (string) or item handles (array of strings).
|
|
||||||
*/
|
|
||||||
public function remove( $handles ) {
|
|
||||||
foreach ( (array) $handles as $handle ) {
|
|
||||||
unset( $this->registered[ $handle ] );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Queue an item or items.
|
|
||||||
*
|
|
||||||
* Decodes handles and arguments, then queues handles and stores
|
|
||||||
* arguments in the class property $args. For example in extending
|
|
||||||
* classes, $args is appended to the item url as a query string.
|
|
||||||
* Note $args is NOT the $args property of items in the $registered array.
|
|
||||||
*
|
|
||||||
* @since 2.1.0
|
|
||||||
* @since 2.6.0 Moved from `WP_Scripts`.
|
|
||||||
*
|
|
||||||
* @param string|string[] $handles Item handle (string) or item handles (array of strings).
|
|
||||||
*/
|
|
||||||
public function enqueue( $handles ) {
|
|
||||||
foreach ( (array) $handles as $handle ) {
|
|
||||||
$handle = explode( '?', $handle );
|
|
||||||
|
|
||||||
if ( ! in_array( $handle[0], $this->queue, true ) && isset( $this->registered[ $handle[0] ] ) ) {
|
|
||||||
$this->queue[] = $handle[0];
|
|
||||||
|
|
||||||
// Reset all dependencies so they must be recalculated in recurse_deps().
|
|
||||||
$this->all_queued_deps = null;
|
|
||||||
|
|
||||||
if ( isset( $handle[1] ) ) {
|
|
||||||
$this->args[ $handle[0] ] = $handle[1];
|
|
||||||
}
|
|
||||||
} elseif ( ! isset( $this->registered[ $handle[0] ] ) ) {
|
|
||||||
$this->queued_before_register[ $handle[0] ] = null; // $args
|
|
||||||
|
|
||||||
if ( isset( $handle[1] ) ) {
|
|
||||||
$this->queued_before_register[ $handle[0] ] = $handle[1];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Dequeue an item or items.
|
|
||||||
*
|
|
||||||
* Decodes handles and arguments, then dequeues handles
|
|
||||||
* and removes arguments from the class property $args.
|
|
||||||
*
|
|
||||||
* @since 2.1.0
|
|
||||||
* @since 2.6.0 Moved from `WP_Scripts`.
|
|
||||||
*
|
|
||||||
* @param string|string[] $handles Item handle (string) or item handles (array of strings).
|
|
||||||
*/
|
|
||||||
public function dequeue( $handles ) {
|
|
||||||
foreach ( (array) $handles as $handle ) {
|
|
||||||
$handle = explode( '?', $handle );
|
|
||||||
$key = array_search( $handle[0], $this->queue, true );
|
|
||||||
|
|
||||||
if ( false !== $key ) {
|
|
||||||
// Reset all dependencies so they must be recalculated in recurse_deps().
|
|
||||||
$this->all_queued_deps = null;
|
|
||||||
|
|
||||||
unset( $this->queue[ $key ] );
|
|
||||||
unset( $this->args[ $handle[0] ] );
|
|
||||||
} elseif ( array_key_exists( $handle[0], $this->queued_before_register ) ) {
|
|
||||||
unset( $this->queued_before_register[ $handle[0] ] );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Recursively search the passed dependency tree for a handle.
|
|
||||||
*
|
|
||||||
* @since 4.0.0
|
|
||||||
*
|
|
||||||
* @param string[] $queue An array of queued _WP_Dependency handles.
|
|
||||||
* @param string $handle Name of the item. Should be unique.
|
|
||||||
* @return bool Whether the handle is found after recursively searching the dependency tree.
|
|
||||||
*/
|
|
||||||
protected function recurse_deps( $queue, $handle ) {
|
|
||||||
if ( isset( $this->all_queued_deps ) ) {
|
|
||||||
return isset( $this->all_queued_deps[ $handle ] );
|
|
||||||
}
|
|
||||||
|
|
||||||
$all_deps = array_fill_keys( $queue, true );
|
|
||||||
$queues = array();
|
|
||||||
$done = array();
|
|
||||||
|
|
||||||
while ( $queue ) {
|
|
||||||
foreach ( $queue as $queued ) {
|
|
||||||
if ( ! isset( $done[ $queued ] ) && isset( $this->registered[ $queued ] ) ) {
|
|
||||||
$deps = $this->registered[ $queued ]->deps;
|
|
||||||
if ( $deps ) {
|
|
||||||
$all_deps += array_fill_keys( $deps, true );
|
|
||||||
array_push( $queues, $deps );
|
|
||||||
}
|
|
||||||
$done[ $queued ] = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$queue = array_pop( $queues );
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->all_queued_deps = $all_deps;
|
|
||||||
|
|
||||||
return isset( $this->all_queued_deps[ $handle ] );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Query the list for an item.
|
|
||||||
*
|
|
||||||
* @since 2.1.0
|
|
||||||
* @since 2.6.0 Moved from `WP_Scripts`.
|
|
||||||
*
|
|
||||||
* @param string $handle Name of the item. Should be unique.
|
|
||||||
* @param string $status Optional. Status of the item to query. Default 'registered'.
|
|
||||||
* @return bool|_WP_Dependency Found, or object Item data.
|
|
||||||
*/
|
|
||||||
public function query( $handle, $status = 'registered' ) {
|
|
||||||
switch ( $status ) {
|
|
||||||
case 'registered':
|
|
||||||
case 'scripts': // Back compat.
|
|
||||||
if ( isset( $this->registered[ $handle ] ) ) {
|
|
||||||
return $this->registered[ $handle ];
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case 'enqueued':
|
|
||||||
case 'queue': // Back compat.
|
|
||||||
if ( in_array( $handle, $this->queue, true ) ) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return $this->recurse_deps( $this->queue, $handle );
|
|
||||||
|
|
||||||
case 'to_do':
|
|
||||||
case 'to_print': // Back compat.
|
|
||||||
return in_array( $handle, $this->to_do, true );
|
|
||||||
|
|
||||||
case 'done':
|
|
||||||
case 'printed': // Back compat.
|
|
||||||
return in_array( $handle, $this->done, true );
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set item group, unless already in a lower group.
|
|
||||||
*
|
|
||||||
* @since 2.8.0
|
|
||||||
*
|
|
||||||
* @param string $handle Name of the item. Should be unique.
|
|
||||||
* @param bool $recursion Internal flag that calling function was called recursively.
|
|
||||||
* @param int|false $group Group level: level (int), no group (false).
|
|
||||||
* @return bool Not already in the group or a lower group.
|
|
||||||
*/
|
|
||||||
public function set_group( $handle, $recursion, $group ) {
|
|
||||||
$group = (int) $group;
|
|
||||||
|
|
||||||
if ( isset( $this->groups[ $handle ] ) && $this->groups[ $handle ] <= $group ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->groups[ $handle ] = $group;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
|
@ -2,726 +2,13 @@
|
||||||
/**
|
/**
|
||||||
* Dependencies API: WP_Scripts class
|
* Dependencies API: WP_Scripts class
|
||||||
*
|
*
|
||||||
* @since 2.6.0
|
* This file is deprecated, use 'wp-includes/class-wp-scripts.php' instead.
|
||||||
*
|
*
|
||||||
|
* @deprecated 6.1.0
|
||||||
* @package WordPress
|
* @package WordPress
|
||||||
* @subpackage Dependencies
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
_deprecated_file( basename( __FILE__ ), '6.1.0', WPINC . '/class-wp-scripts.php' );
|
||||||
* Core class used to register scripts.
|
|
||||||
*
|
|
||||||
* @since 2.1.0
|
|
||||||
*
|
|
||||||
* @see WP_Dependencies
|
|
||||||
*/
|
|
||||||
class WP_Scripts extends WP_Dependencies {
|
|
||||||
/**
|
|
||||||
* Base URL for scripts.
|
|
||||||
*
|
|
||||||
* Full URL with trailing slash.
|
|
||||||
*
|
|
||||||
* @since 2.6.0
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
public $base_url;
|
|
||||||
|
|
||||||
/**
|
/** WP_Scripts class */
|
||||||
* URL of the content directory.
|
require_once ABSPATH . WPINC . '/class-wp-scripts.php';
|
||||||
*
|
|
||||||
* @since 2.8.0
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
public $content_url;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Default version string for scripts.
|
|
||||||
*
|
|
||||||
* @since 2.6.0
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
public $default_version;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Holds handles of scripts which are enqueued in footer.
|
|
||||||
*
|
|
||||||
* @since 2.8.0
|
|
||||||
* @var array
|
|
||||||
*/
|
|
||||||
public $in_footer = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Holds a list of script handles which will be concatenated.
|
|
||||||
*
|
|
||||||
* @since 2.8.0
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
public $concat = '';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Holds a string which contains script handles and their version.
|
|
||||||
*
|
|
||||||
* @since 2.8.0
|
|
||||||
* @deprecated 3.4.0
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
public $concat_version = '';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Whether to perform concatenation.
|
|
||||||
*
|
|
||||||
* @since 2.8.0
|
|
||||||
* @var bool
|
|
||||||
*/
|
|
||||||
public $do_concat = false;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Holds HTML markup of scripts and additional data if concatenation
|
|
||||||
* is enabled.
|
|
||||||
*
|
|
||||||
* @since 2.8.0
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
public $print_html = '';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Holds inline code if concatenation is enabled.
|
|
||||||
*
|
|
||||||
* @since 2.8.0
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
public $print_code = '';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Holds a list of script handles which are not in the default directory
|
|
||||||
* if concatenation is enabled.
|
|
||||||
*
|
|
||||||
* Unused in core.
|
|
||||||
*
|
|
||||||
* @since 2.8.0
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
public $ext_handles = '';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Holds a string which contains handles and versions of scripts which
|
|
||||||
* are not in the default directory if concatenation is enabled.
|
|
||||||
*
|
|
||||||
* Unused in core.
|
|
||||||
*
|
|
||||||
* @since 2.8.0
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
public $ext_version = '';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* List of default directories.
|
|
||||||
*
|
|
||||||
* @since 2.8.0
|
|
||||||
* @var array
|
|
||||||
*/
|
|
||||||
public $default_dirs;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Holds a string which contains the type attribute for script tag.
|
|
||||||
*
|
|
||||||
* If the active theme does not declare HTML5 support for 'script',
|
|
||||||
* then it initializes as `type='text/javascript'`.
|
|
||||||
*
|
|
||||||
* @since 5.3.0
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
private $type_attr = '';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor.
|
|
||||||
*
|
|
||||||
* @since 2.6.0
|
|
||||||
*/
|
|
||||||
public function __construct() {
|
|
||||||
$this->init();
|
|
||||||
add_action( 'init', array( $this, 'init' ), 0 );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Initialize the class.
|
|
||||||
*
|
|
||||||
* @since 3.4.0
|
|
||||||
*/
|
|
||||||
public function init() {
|
|
||||||
if (
|
|
||||||
function_exists( 'is_admin' ) && ! is_admin()
|
|
||||||
&&
|
|
||||||
function_exists( 'current_theme_supports' ) && ! current_theme_supports( 'html5', 'script' )
|
|
||||||
) {
|
|
||||||
$this->type_attr = " type='text/javascript'";
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Fires when the WP_Scripts instance is initialized.
|
|
||||||
*
|
|
||||||
* @since 2.6.0
|
|
||||||
*
|
|
||||||
* @param WP_Scripts $wp_scripts WP_Scripts instance (passed by reference).
|
|
||||||
*/
|
|
||||||
do_action_ref_array( 'wp_default_scripts', array( &$this ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prints scripts.
|
|
||||||
*
|
|
||||||
* Prints the scripts passed to it or the print queue. Also prints all necessary dependencies.
|
|
||||||
*
|
|
||||||
* @since 2.1.0
|
|
||||||
* @since 2.8.0 Added the `$group` parameter.
|
|
||||||
*
|
|
||||||
* @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.
|
|
||||||
* @return string[] Handles of scripts that have been printed.
|
|
||||||
*/
|
|
||||||
public function print_scripts( $handles = false, $group = false ) {
|
|
||||||
return $this->do_items( $handles, $group );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prints extra scripts of a registered script.
|
|
||||||
*
|
|
||||||
* @since 2.1.0
|
|
||||||
* @since 2.8.0 Added the `$display` parameter.
|
|
||||||
* @deprecated 3.3.0
|
|
||||||
*
|
|
||||||
* @see print_extra_script()
|
|
||||||
*
|
|
||||||
* @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,
|
|
||||||
* true otherwise.
|
|
||||||
*/
|
|
||||||
public function print_scripts_l10n( $handle, $display = true ) {
|
|
||||||
_deprecated_function( __FUNCTION__, '3.3.0', 'WP_Scripts::print_extra_script()' );
|
|
||||||
return $this->print_extra_script( $handle, $display );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prints extra scripts of a registered script.
|
|
||||||
*
|
|
||||||
* @since 3.3.0
|
|
||||||
*
|
|
||||||
* @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,
|
|
||||||
* true otherwise.
|
|
||||||
*/
|
|
||||||
public function print_extra_script( $handle, $display = true ) {
|
|
||||||
$output = $this->get_data( $handle, 'data' );
|
|
||||||
if ( ! $output ) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ! $display ) {
|
|
||||||
return $output;
|
|
||||||
}
|
|
||||||
|
|
||||||
printf( "<script%s id='%s-js-extra'>\n", $this->type_attr, esc_attr( $handle ) );
|
|
||||||
|
|
||||||
// CDATA is not needed for HTML 5.
|
|
||||||
if ( $this->type_attr ) {
|
|
||||||
echo "/* <![CDATA[ */\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "$output\n";
|
|
||||||
|
|
||||||
if ( $this->type_attr ) {
|
|
||||||
echo "/* ]]> */\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "</script>\n";
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Processes a script dependency.
|
|
||||||
*
|
|
||||||
* @since 2.6.0
|
|
||||||
* @since 2.8.0 Added the `$group` parameter.
|
|
||||||
*
|
|
||||||
* @see WP_Dependencies::do_item()
|
|
||||||
*
|
|
||||||
* @param string $handle The script's registered handle.
|
|
||||||
* @param int|false $group Optional. Group level: level (int), no groups (false).
|
|
||||||
* Default false.
|
|
||||||
* @return bool True on success, false on failure.
|
|
||||||
*/
|
|
||||||
public function do_item( $handle, $group = false ) {
|
|
||||||
if ( ! parent::do_item( $handle ) ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( 0 === $group && $this->groups[ $handle ] > 0 ) {
|
|
||||||
$this->in_footer[] = $handle;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( false === $group && in_array( $handle, $this->in_footer, true ) ) {
|
|
||||||
$this->in_footer = array_diff( $this->in_footer, (array) $handle );
|
|
||||||
}
|
|
||||||
|
|
||||||
$obj = $this->registered[ $handle ];
|
|
||||||
|
|
||||||
if ( null === $obj->ver ) {
|
|
||||||
$ver = '';
|
|
||||||
} else {
|
|
||||||
$ver = $obj->ver ? $obj->ver : $this->default_version;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( isset( $this->args[ $handle ] ) ) {
|
|
||||||
$ver = $ver ? $ver . '&' . $this->args[ $handle ] : $this->args[ $handle ];
|
|
||||||
}
|
|
||||||
|
|
||||||
$src = $obj->src;
|
|
||||||
$cond_before = '';
|
|
||||||
$cond_after = '';
|
|
||||||
$conditional = isset( $obj->extra['conditional'] ) ? $obj->extra['conditional'] : '';
|
|
||||||
|
|
||||||
if ( $conditional ) {
|
|
||||||
$cond_before = "<!--[if {$conditional}]>\n";
|
|
||||||
$cond_after = "<![endif]-->\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
$before_handle = $this->print_inline_script( $handle, 'before', false );
|
|
||||||
$after_handle = $this->print_inline_script( $handle, 'after', false );
|
|
||||||
|
|
||||||
if ( $before_handle ) {
|
|
||||||
$before_handle = sprintf( "<script%s id='%s-js-before'>\n%s\n</script>\n", $this->type_attr, esc_attr( $handle ), $before_handle );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( $after_handle ) {
|
|
||||||
$after_handle = sprintf( "<script%s id='%s-js-after'>\n%s\n</script>\n", $this->type_attr, esc_attr( $handle ), $after_handle );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( $before_handle || $after_handle ) {
|
|
||||||
$inline_script_tag = $cond_before . $before_handle . $after_handle . $cond_after;
|
|
||||||
} else {
|
|
||||||
$inline_script_tag = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Prevent concatenation of scripts if the text domain is defined
|
|
||||||
* to ensure the dependency order is respected.
|
|
||||||
*/
|
|
||||||
$translations_stop_concat = ! empty( $obj->textdomain );
|
|
||||||
|
|
||||||
$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 );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( $this->do_concat ) {
|
|
||||||
/**
|
|
||||||
* Filters the script loader source.
|
|
||||||
*
|
|
||||||
* @since 2.2.0
|
|
||||||
*
|
|
||||||
* @param string $src Script loader source path.
|
|
||||||
* @param string $handle Script handle.
|
|
||||||
*/
|
|
||||||
$srce = apply_filters( 'script_loader_src', $src, $handle );
|
|
||||||
|
|
||||||
if ( $this->in_default_dir( $srce ) && ( $before_handle || $after_handle || $translations_stop_concat ) ) {
|
|
||||||
$this->do_concat = false;
|
|
||||||
|
|
||||||
// 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 ) {
|
|
||||||
$this->print_code .= $this->print_extra_script( $handle, false );
|
|
||||||
$this->concat .= "$handle,";
|
|
||||||
$this->concat_version .= "$handle$ver";
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
$this->ext_handles .= "$handle,";
|
|
||||||
$this->ext_version .= "$handle$ver";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$has_conditional_data = $conditional && $this->get_data( $handle, 'data' );
|
|
||||||
|
|
||||||
if ( $has_conditional_data ) {
|
|
||||||
echo $cond_before;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->print_extra_script( $handle );
|
|
||||||
|
|
||||||
if ( $has_conditional_data ) {
|
|
||||||
echo $cond_after;
|
|
||||||
}
|
|
||||||
|
|
||||||
// A single item may alias a set of items, by having dependencies, but no source.
|
|
||||||
if ( ! $src ) {
|
|
||||||
if ( $inline_script_tag ) {
|
|
||||||
if ( $this->do_concat ) {
|
|
||||||
$this->print_html .= $inline_script_tag;
|
|
||||||
} else {
|
|
||||||
echo $inline_script_tag;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ! preg_match( '|^(https?:)?//|', $src ) && ! ( $this->content_url && 0 === strpos( $src, $this->content_url ) ) ) {
|
|
||||||
$src = $this->base_url . $src;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ! empty( $ver ) ) {
|
|
||||||
$src = add_query_arg( 'ver', $ver, $src );
|
|
||||||
}
|
|
||||||
|
|
||||||
/** This filter is documented in wp-includes/class.wp-scripts.php */
|
|
||||||
$src = esc_url( apply_filters( 'script_loader_src', $src, $handle ) );
|
|
||||||
|
|
||||||
if ( ! $src ) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
$tag = $translations . $cond_before . $before_handle;
|
|
||||||
$tag .= sprintf( "<script%s src='%s' id='%s-js'></script>\n", $this->type_attr, $src, esc_attr( $handle ) );
|
|
||||||
$tag .= $after_handle . $cond_after;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Filters the HTML script tag of an enqueued script.
|
|
||||||
*
|
|
||||||
* @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 ) {
|
|
||||||
$this->print_html .= $tag;
|
|
||||||
} else {
|
|
||||||
echo $tag;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds extra code to a registered script.
|
|
||||||
*
|
|
||||||
* @since 4.5.0
|
|
||||||
*
|
|
||||||
* @param string $handle Name of the script to add the inline script to.
|
|
||||||
* Must be lowercase.
|
|
||||||
* @param string $data String containing the JavaScript to be added.
|
|
||||||
* @param string $position Optional. Whether to add the inline script
|
|
||||||
* before the handle or after. Default 'after'.
|
|
||||||
* @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 );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prints inline scripts registered for a specific handle.
|
|
||||||
*
|
|
||||||
* @since 4.5.0
|
|
||||||
*
|
|
||||||
* @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'.
|
|
||||||
* @param bool $display Optional. Whether to print the script
|
|
||||||
* instead of just returning it. Default true.
|
|
||||||
* @return string|false Script on success, false otherwise.
|
|
||||||
*/
|
|
||||||
public function print_inline_script( $handle, $position = 'after', $display = true ) {
|
|
||||||
$output = $this->get_data( $handle, $position );
|
|
||||||
|
|
||||||
if ( empty( $output ) ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$output = trim( implode( "\n", $output ), "\n" );
|
|
||||||
|
|
||||||
if ( $display ) {
|
|
||||||
printf( "<script%s id='%s-js-%s'>\n%s\n</script>\n", $this->type_attr, esc_attr( $handle ), esc_attr( $position ), $output );
|
|
||||||
}
|
|
||||||
|
|
||||||
return $output;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Localizes a script, only if the script has already been added.
|
|
||||||
*
|
|
||||||
* @since 2.1.0
|
|
||||||
*
|
|
||||||
* @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.
|
|
||||||
*/
|
|
||||||
public function localize( $handle, $object_name, $l10n ) {
|
|
||||||
if ( 'jquery' === $handle ) {
|
|
||||||
$handle = 'jquery-core';
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( is_array( $l10n ) && isset( $l10n['l10n_print_after'] ) ) { // back compat, preserve the code in 'l10n_print_after' if present.
|
|
||||||
$after = $l10n['l10n_print_after'];
|
|
||||||
unset( $l10n['l10n_print_after'] );
|
|
||||||
}
|
|
||||||
|
|
||||||
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 ( false === $l10n ) {
|
|
||||||
// This should really not be needed, but is necessary for backward compatibility.
|
|
||||||
$l10n = array( $l10n );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( is_string( $l10n ) ) {
|
|
||||||
$l10n = html_entity_decode( $l10n, ENT_QUOTES, 'UTF-8' );
|
|
||||||
} elseif ( is_array( $l10n ) ) {
|
|
||||||
foreach ( $l10n as $key => $value ) {
|
|
||||||
if ( ! is_scalar( $value ) ) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
$l10n[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$script = "var $object_name = " . wp_json_encode( $l10n ) . ';';
|
|
||||||
|
|
||||||
if ( ! empty( $after ) ) {
|
|
||||||
$script .= "\n$after;";
|
|
||||||
}
|
|
||||||
|
|
||||||
$data = $this->get_data( $handle, 'data' );
|
|
||||||
|
|
||||||
if ( ! empty( $data ) ) {
|
|
||||||
$script = "$data\n$script";
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->add_data( $handle, 'data', $script );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets handle group.
|
|
||||||
*
|
|
||||||
* @since 2.8.0
|
|
||||||
*
|
|
||||||
* @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.
|
|
||||||
* @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.
|
|
||||||
*/
|
|
||||||
public function set_group( $handle, $recursion, $group = false ) {
|
|
||||||
if ( isset( $this->registered[ $handle ]->args ) && 1 === $this->registered[ $handle ]->args ) {
|
|
||||||
$grp = 1;
|
|
||||||
} else {
|
|
||||||
$grp = (int) $this->get_data( $handle, 'group' );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( false !== $group && $grp > $group ) {
|
|
||||||
$grp = $group;
|
|
||||||
}
|
|
||||||
|
|
||||||
return parent::set_group( $handle, $recursion, $grp );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets a translation textdomain.
|
|
||||||
*
|
|
||||||
* @since 5.0.0
|
|
||||||
* @since 5.1.0 The `$domain` parameter was made optional.
|
|
||||||
*
|
|
||||||
* @param string $handle Name of the script to register a translation domain to.
|
|
||||||
* @param string $domain Optional. Text domain. Default 'default'.
|
|
||||||
* @param string $path Optional. The full file path to the directory containing translation files.
|
|
||||||
* @return bool True if the text domain was registered, false if not.
|
|
||||||
*/
|
|
||||||
public function set_translations( $handle, $domain = 'default', $path = null ) {
|
|
||||||
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';
|
|
||||||
}
|
|
||||||
|
|
||||||
return $obj->set_translations( $domain, $path );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prints translations set for a specific handle.
|
|
||||||
*
|
|
||||||
* @since 5.0.0
|
|
||||||
*
|
|
||||||
* @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.
|
|
||||||
* @return string|false Script on success, false otherwise.
|
|
||||||
*/
|
|
||||||
public function print_translations( $handle, $display = true ) {
|
|
||||||
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 ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$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;
|
|
||||||
|
|
||||||
if ( $display ) {
|
|
||||||
printf( "<script%s id='%s-js-translations'>\n%s\n</script>\n", $this->type_attr, esc_attr( $handle ), $output );
|
|
||||||
}
|
|
||||||
|
|
||||||
return $output;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Determines script dependencies.
|
|
||||||
*
|
|
||||||
* @since 2.1.0
|
|
||||||
*
|
|
||||||
* @see WP_Dependencies::all_deps()
|
|
||||||
*
|
|
||||||
* @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.
|
|
||||||
* @return bool True on success, false on failure.
|
|
||||||
*/
|
|
||||||
public function all_deps( $handles, $recursion = false, $group = false ) {
|
|
||||||
$r = parent::all_deps( $handles, $recursion, $group );
|
|
||||||
if ( ! $recursion ) {
|
|
||||||
/**
|
|
||||||
* Filters the list of script dependencies left to print.
|
|
||||||
*
|
|
||||||
* @since 2.3.0
|
|
||||||
*
|
|
||||||
* @param string[] $to_do An array of script dependency handles.
|
|
||||||
*/
|
|
||||||
$this->to_do = apply_filters( 'print_scripts_array', $this->to_do );
|
|
||||||
}
|
|
||||||
return $r;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Processes items and dependencies for the head group.
|
|
||||||
*
|
|
||||||
* @since 2.8.0
|
|
||||||
*
|
|
||||||
* @see WP_Dependencies::do_items()
|
|
||||||
*
|
|
||||||
* @return string[] Handles of items that have been processed.
|
|
||||||
*/
|
|
||||||
public function do_head_items() {
|
|
||||||
$this->do_items( false, 0 );
|
|
||||||
return $this->done;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Processes items and dependencies for the footer group.
|
|
||||||
*
|
|
||||||
* @since 2.8.0
|
|
||||||
*
|
|
||||||
* @see WP_Dependencies::do_items()
|
|
||||||
*
|
|
||||||
* @return string[] Handles of items that have been processed.
|
|
||||||
*/
|
|
||||||
public function do_footer_items() {
|
|
||||||
$this->do_items( false, 1 );
|
|
||||||
return $this->done;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Whether a handle's source is in a default directory.
|
|
||||||
*
|
|
||||||
* @since 2.8.0
|
|
||||||
*
|
|
||||||
* @param string $src The source of the enqueued script.
|
|
||||||
* @return bool True if found, false if not.
|
|
||||||
*/
|
|
||||||
public function in_default_dir( $src ) {
|
|
||||||
if ( ! $this->default_dirs ) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( 0 === strpos( $src, '/' . WPINC . '/js/l10n' ) ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ( (array) $this->default_dirs as $test ) {
|
|
||||||
if ( 0 === strpos( $src, $test ) ) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resets class properties.
|
|
||||||
*
|
|
||||||
* @since 2.8.0
|
|
||||||
*/
|
|
||||||
public function reset() {
|
|
||||||
$this->do_concat = false;
|
|
||||||
$this->print_code = '';
|
|
||||||
$this->concat = '';
|
|
||||||
$this->concat_version = '';
|
|
||||||
$this->print_html = '';
|
|
||||||
$this->ext_version = '';
|
|
||||||
$this->ext_handles = '';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -2,463 +2,13 @@
|
||||||
/**
|
/**
|
||||||
* Dependencies API: WP_Styles class
|
* Dependencies API: WP_Styles class
|
||||||
*
|
*
|
||||||
* @since 2.6.0
|
* This file is deprecated, use 'wp-includes/class-wp-styles.php' instead.
|
||||||
*
|
*
|
||||||
|
* @deprecated 6.1.0
|
||||||
* @package WordPress
|
* @package WordPress
|
||||||
* @subpackage Dependencies
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
_deprecated_file( basename( __FILE__ ), '6.1.0', WPINC . '/class-wp-styles.php' );
|
||||||
* Core class used to register styles.
|
|
||||||
*
|
|
||||||
* @since 2.6.0
|
|
||||||
*
|
|
||||||
* @see WP_Dependencies
|
|
||||||
*/
|
|
||||||
class WP_Styles extends WP_Dependencies {
|
|
||||||
/**
|
|
||||||
* Base URL for styles.
|
|
||||||
*
|
|
||||||
* Full URL with trailing slash.
|
|
||||||
*
|
|
||||||
* @since 2.6.0
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
public $base_url;
|
|
||||||
|
|
||||||
/**
|
/** WP_Styles class */
|
||||||
* URL of the content directory.
|
require_once ABSPATH . WPINC . '/class-wp-styles.php';
|
||||||
*
|
|
||||||
* @since 2.8.0
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
public $content_url;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Default version string for stylesheets.
|
|
||||||
*
|
|
||||||
* @since 2.6.0
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
public $default_version;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The current text direction.
|
|
||||||
*
|
|
||||||
* @since 2.6.0
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
public $text_direction = 'ltr';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Holds a list of style handles which will be concatenated.
|
|
||||||
*
|
|
||||||
* @since 2.8.0
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
public $concat = '';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Holds a string which contains style handles and their version.
|
|
||||||
*
|
|
||||||
* @since 2.8.0
|
|
||||||
* @deprecated 3.4.0
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
public $concat_version = '';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Whether to perform concatenation.
|
|
||||||
*
|
|
||||||
* @since 2.8.0
|
|
||||||
* @var bool
|
|
||||||
*/
|
|
||||||
public $do_concat = false;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Holds HTML markup of styles and additional data if concatenation
|
|
||||||
* is enabled.
|
|
||||||
*
|
|
||||||
* @since 2.8.0
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
public $print_html = '';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Holds inline styles if concatenation is enabled.
|
|
||||||
*
|
|
||||||
* @since 3.3.0
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
public $print_code = '';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* List of default directories.
|
|
||||||
*
|
|
||||||
* @since 2.8.0
|
|
||||||
* @var array
|
|
||||||
*/
|
|
||||||
public $default_dirs;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Holds a string which contains the type attribute for style tag.
|
|
||||||
*
|
|
||||||
* If the active theme does not declare HTML5 support for 'style',
|
|
||||||
* then it initializes as `type='text/css'`.
|
|
||||||
*
|
|
||||||
* @since 5.3.0
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
private $type_attr = '';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor.
|
|
||||||
*
|
|
||||||
* @since 2.6.0
|
|
||||||
*/
|
|
||||||
public function __construct() {
|
|
||||||
if (
|
|
||||||
function_exists( 'is_admin' ) && ! is_admin()
|
|
||||||
&&
|
|
||||||
function_exists( 'current_theme_supports' ) && ! current_theme_supports( 'html5', 'style' )
|
|
||||||
) {
|
|
||||||
$this->type_attr = " type='text/css'";
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Fires when the WP_Styles instance is initialized.
|
|
||||||
*
|
|
||||||
* @since 2.6.0
|
|
||||||
*
|
|
||||||
* @param WP_Styles $wp_styles WP_Styles instance (passed by reference).
|
|
||||||
*/
|
|
||||||
do_action_ref_array( 'wp_default_styles', array( &$this ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Processes a style dependency.
|
|
||||||
*
|
|
||||||
* @since 2.6.0
|
|
||||||
* @since 5.5.0 Added the `$group` parameter.
|
|
||||||
*
|
|
||||||
* @see WP_Dependencies::do_item()
|
|
||||||
*
|
|
||||||
* @param string $handle The style's registered handle.
|
|
||||||
* @param int|false $group Optional. Group level: level (int), no groups (false).
|
|
||||||
* Default false.
|
|
||||||
* @return bool True on success, false on failure.
|
|
||||||
*/
|
|
||||||
public function do_item( $handle, $group = false ) {
|
|
||||||
if ( ! parent::do_item( $handle ) ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$obj = $this->registered[ $handle ];
|
|
||||||
|
|
||||||
if ( null === $obj->ver ) {
|
|
||||||
$ver = '';
|
|
||||||
} else {
|
|
||||||
$ver = $obj->ver ? $obj->ver : $this->default_version;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( isset( $this->args[ $handle ] ) ) {
|
|
||||||
$ver = $ver ? $ver . '&' . $this->args[ $handle ] : $this->args[ $handle ];
|
|
||||||
}
|
|
||||||
|
|
||||||
$src = $obj->src;
|
|
||||||
$cond_before = '';
|
|
||||||
$cond_after = '';
|
|
||||||
$conditional = isset( $obj->extra['conditional'] ) ? $obj->extra['conditional'] : '';
|
|
||||||
|
|
||||||
if ( $conditional ) {
|
|
||||||
$cond_before = "<!--[if {$conditional}]>\n";
|
|
||||||
$cond_after = "<![endif]-->\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
$inline_style = $this->print_inline_style( $handle, false );
|
|
||||||
|
|
||||||
if ( $inline_style ) {
|
|
||||||
$inline_style_tag = sprintf(
|
|
||||||
"<style id='%s-inline-css'%s>\n%s\n</style>\n",
|
|
||||||
esc_attr( $handle ),
|
|
||||||
$this->type_attr,
|
|
||||||
$inline_style
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
$inline_style_tag = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( $this->do_concat ) {
|
|
||||||
if ( $this->in_default_dir( $src ) && ! $conditional && ! isset( $obj->extra['alt'] ) ) {
|
|
||||||
$this->concat .= "$handle,";
|
|
||||||
$this->concat_version .= "$handle$ver";
|
|
||||||
|
|
||||||
$this->print_code .= $inline_style;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( isset( $obj->args ) ) {
|
|
||||||
$media = esc_attr( $obj->args );
|
|
||||||
} else {
|
|
||||||
$media = 'all';
|
|
||||||
}
|
|
||||||
|
|
||||||
// A single item may alias a set of items, by having dependencies, but no source.
|
|
||||||
if ( ! $src ) {
|
|
||||||
if ( $inline_style_tag ) {
|
|
||||||
if ( $this->do_concat ) {
|
|
||||||
$this->print_html .= $inline_style_tag;
|
|
||||||
} else {
|
|
||||||
echo $inline_style_tag;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
$href = $this->_css_href( $src, $ver, $handle );
|
|
||||||
if ( ! $href ) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
$rel = isset( $obj->extra['alt'] ) && $obj->extra['alt'] ? 'alternate stylesheet' : 'stylesheet';
|
|
||||||
$title = isset( $obj->extra['title'] ) ? sprintf( "title='%s'", esc_attr( $obj->extra['title'] ) ) : '';
|
|
||||||
|
|
||||||
$tag = sprintf(
|
|
||||||
"<link rel='%s' id='%s-css' %s href='%s'%s media='%s' />\n",
|
|
||||||
$rel,
|
|
||||||
$handle,
|
|
||||||
$title,
|
|
||||||
$href,
|
|
||||||
$this->type_attr,
|
|
||||||
$media
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Filters the HTML link tag of an enqueued style.
|
|
||||||
*
|
|
||||||
* @since 2.6.0
|
|
||||||
* @since 4.3.0 Introduced the `$href` parameter.
|
|
||||||
* @since 4.5.0 Introduced the `$media` parameter.
|
|
||||||
*
|
|
||||||
* @param string $tag The link tag for the enqueued style.
|
|
||||||
* @param string $handle The style's registered handle.
|
|
||||||
* @param string $href The stylesheet's source URL.
|
|
||||||
* @param string $media The stylesheet's media attribute.
|
|
||||||
*/
|
|
||||||
$tag = apply_filters( 'style_loader_tag', $tag, $handle, $href, $media );
|
|
||||||
|
|
||||||
if ( 'rtl' === $this->text_direction && isset( $obj->extra['rtl'] ) && $obj->extra['rtl'] ) {
|
|
||||||
if ( is_bool( $obj->extra['rtl'] ) || 'replace' === $obj->extra['rtl'] ) {
|
|
||||||
$suffix = isset( $obj->extra['suffix'] ) ? $obj->extra['suffix'] : '';
|
|
||||||
$rtl_href = str_replace( "{$suffix}.css", "-rtl{$suffix}.css", $this->_css_href( $src, $ver, "$handle-rtl" ) );
|
|
||||||
} else {
|
|
||||||
$rtl_href = $this->_css_href( $obj->extra['rtl'], $ver, "$handle-rtl" );
|
|
||||||
}
|
|
||||||
|
|
||||||
$rtl_tag = sprintf(
|
|
||||||
"<link rel='%s' id='%s-rtl-css' %s href='%s'%s media='%s' />\n",
|
|
||||||
$rel,
|
|
||||||
$handle,
|
|
||||||
$title,
|
|
||||||
$rtl_href,
|
|
||||||
$this->type_attr,
|
|
||||||
$media
|
|
||||||
);
|
|
||||||
|
|
||||||
/** This filter is documented in wp-includes/class.wp-styles.php */
|
|
||||||
$rtl_tag = apply_filters( 'style_loader_tag', $rtl_tag, $handle, $rtl_href, $media );
|
|
||||||
|
|
||||||
if ( 'replace' === $obj->extra['rtl'] ) {
|
|
||||||
$tag = $rtl_tag;
|
|
||||||
} else {
|
|
||||||
$tag .= $rtl_tag;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( $this->do_concat ) {
|
|
||||||
$this->print_html .= $cond_before;
|
|
||||||
$this->print_html .= $tag;
|
|
||||||
if ( $inline_style_tag ) {
|
|
||||||
$this->print_html .= $inline_style_tag;
|
|
||||||
}
|
|
||||||
$this->print_html .= $cond_after;
|
|
||||||
} else {
|
|
||||||
echo $cond_before;
|
|
||||||
echo $tag;
|
|
||||||
$this->print_inline_style( $handle );
|
|
||||||
echo $cond_after;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds extra CSS styles to a registered stylesheet.
|
|
||||||
*
|
|
||||||
* @since 3.3.0
|
|
||||||
*
|
|
||||||
* @param string $handle The style's registered handle.
|
|
||||||
* @param string $code String containing the CSS styles to be added.
|
|
||||||
* @return bool True on success, false on failure.
|
|
||||||
*/
|
|
||||||
public function add_inline_style( $handle, $code ) {
|
|
||||||
if ( ! $code ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$after = $this->get_data( $handle, 'after' );
|
|
||||||
if ( ! $after ) {
|
|
||||||
$after = array();
|
|
||||||
}
|
|
||||||
|
|
||||||
$after[] = $code;
|
|
||||||
|
|
||||||
return $this->add_data( $handle, 'after', $after );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prints extra CSS styles of a registered stylesheet.
|
|
||||||
*
|
|
||||||
* @since 3.3.0
|
|
||||||
*
|
|
||||||
* @param string $handle The style's registered handle.
|
|
||||||
* @param bool $display Optional. Whether to print the inline style
|
|
||||||
* instead of just returning it. Default true.
|
|
||||||
* @return string|bool False if no data exists, inline styles if `$display` is true,
|
|
||||||
* true otherwise.
|
|
||||||
*/
|
|
||||||
public function print_inline_style( $handle, $display = true ) {
|
|
||||||
$output = $this->get_data( $handle, 'after' );
|
|
||||||
|
|
||||||
if ( empty( $output ) ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$output = implode( "\n", $output );
|
|
||||||
|
|
||||||
if ( ! $display ) {
|
|
||||||
return $output;
|
|
||||||
}
|
|
||||||
|
|
||||||
printf(
|
|
||||||
"<style id='%s-inline-css'%s>\n%s\n</style>\n",
|
|
||||||
esc_attr( $handle ),
|
|
||||||
$this->type_attr,
|
|
||||||
$output
|
|
||||||
);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Determines style dependencies.
|
|
||||||
*
|
|
||||||
* @since 2.6.0
|
|
||||||
*
|
|
||||||
* @see WP_Dependencies::all_deps()
|
|
||||||
*
|
|
||||||
* @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.
|
|
||||||
* @return bool True on success, false on failure.
|
|
||||||
*/
|
|
||||||
public function all_deps( $handles, $recursion = false, $group = false ) {
|
|
||||||
$r = parent::all_deps( $handles, $recursion, $group );
|
|
||||||
if ( ! $recursion ) {
|
|
||||||
/**
|
|
||||||
* Filters the array of enqueued styles before processing for output.
|
|
||||||
*
|
|
||||||
* @since 2.6.0
|
|
||||||
*
|
|
||||||
* @param string[] $to_do The list of enqueued style handles about to be processed.
|
|
||||||
*/
|
|
||||||
$this->to_do = apply_filters( 'print_styles_array', $this->to_do );
|
|
||||||
}
|
|
||||||
return $r;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Generates an enqueued style's fully-qualified URL.
|
|
||||||
*
|
|
||||||
* @since 2.6.0
|
|
||||||
*
|
|
||||||
* @param string $src The source of the enqueued style.
|
|
||||||
* @param string $ver The version of the enqueued style.
|
|
||||||
* @param string $handle The style's registered handle.
|
|
||||||
* @return string Style's fully-qualified URL.
|
|
||||||
*/
|
|
||||||
public function _css_href( $src, $ver, $handle ) {
|
|
||||||
if ( ! is_bool( $src ) && ! preg_match( '|^(https?:)?//|', $src ) && ! ( $this->content_url && 0 === strpos( $src, $this->content_url ) ) ) {
|
|
||||||
$src = $this->base_url . $src;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ! empty( $ver ) ) {
|
|
||||||
$src = add_query_arg( 'ver', $ver, $src );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Filters an enqueued style's fully-qualified URL.
|
|
||||||
*
|
|
||||||
* @since 2.6.0
|
|
||||||
*
|
|
||||||
* @param string $src The source URL of the enqueued style.
|
|
||||||
* @param string $handle The style's registered handle.
|
|
||||||
*/
|
|
||||||
$src = apply_filters( 'style_loader_src', $src, $handle );
|
|
||||||
return esc_url( $src );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Whether a handle's source is in a default directory.
|
|
||||||
*
|
|
||||||
* @since 2.8.0
|
|
||||||
*
|
|
||||||
* @param string $src The source of the enqueued style.
|
|
||||||
* @return bool True if found, false if not.
|
|
||||||
*/
|
|
||||||
public function in_default_dir( $src ) {
|
|
||||||
if ( ! $this->default_dirs ) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ( (array) $this->default_dirs as $test ) {
|
|
||||||
if ( 0 === strpos( $src, $test ) ) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Processes items and dependencies for the footer group.
|
|
||||||
*
|
|
||||||
* HTML 5 allows styles in the body, grab late enqueued items and output them in the footer.
|
|
||||||
*
|
|
||||||
* @since 3.3.0
|
|
||||||
*
|
|
||||||
* @see WP_Dependencies::do_items()
|
|
||||||
*
|
|
||||||
* @return string[] Handles of items that have been processed.
|
|
||||||
*/
|
|
||||||
public function do_footer_items() {
|
|
||||||
$this->do_items( false, 1 );
|
|
||||||
return $this->done;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resets class properties.
|
|
||||||
*
|
|
||||||
* @since 3.3.0
|
|
||||||
*/
|
|
||||||
public function reset() {
|
|
||||||
$this->do_concat = false;
|
|
||||||
$this->concat = '';
|
|
||||||
$this->concat_version = '';
|
|
||||||
$this->print_html = '';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -5795,14 +5795,14 @@ function _print_emoji_detection_script() {
|
||||||
|
|
||||||
if ( SCRIPT_DEBUG ) {
|
if ( SCRIPT_DEBUG ) {
|
||||||
$settings['source'] = array(
|
$settings['source'] = array(
|
||||||
/** This filter is documented in wp-includes/class.wp-scripts.php */
|
/** This filter is documented in wp-includes/class-wp-scripts.php */
|
||||||
'wpemoji' => apply_filters( 'script_loader_src', includes_url( "js/wp-emoji.js?$version" ), 'wpemoji' ),
|
'wpemoji' => apply_filters( 'script_loader_src', includes_url( "js/wp-emoji.js?$version" ), 'wpemoji' ),
|
||||||
/** This filter is documented in wp-includes/class.wp-scripts.php */
|
/** This filter is documented in wp-includes/class-wp-scripts.php */
|
||||||
'twemoji' => apply_filters( 'script_loader_src', includes_url( "js/twemoji.js?$version" ), 'twemoji' ),
|
'twemoji' => apply_filters( 'script_loader_src', includes_url( "js/twemoji.js?$version" ), 'twemoji' ),
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
$settings['source'] = array(
|
$settings['source'] = array(
|
||||||
/** This filter is documented in wp-includes/class.wp-scripts.php */
|
/** This filter is documented in wp-includes/class-wp-scripts.php */
|
||||||
'concatemoji' => apply_filters( 'script_loader_src', includes_url( "js/wp-emoji-release.min.js?$version" ), 'concatemoji' ),
|
'concatemoji' => apply_filters( 'script_loader_src', includes_url( "js/wp-emoji-release.min.js?$version" ), 'concatemoji' ),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,16 +20,16 @@
|
||||||
require ABSPATH . WPINC . '/class-wp-dependency.php';
|
require ABSPATH . WPINC . '/class-wp-dependency.php';
|
||||||
|
|
||||||
/** WordPress Dependencies Class */
|
/** WordPress Dependencies Class */
|
||||||
require ABSPATH . WPINC . '/class.wp-dependencies.php';
|
require ABSPATH . WPINC . '/class-wp-dependencies.php';
|
||||||
|
|
||||||
/** WordPress Scripts Class */
|
/** WordPress Scripts Class */
|
||||||
require ABSPATH . WPINC . '/class.wp-scripts.php';
|
require ABSPATH . WPINC . '/class-wp-scripts.php';
|
||||||
|
|
||||||
/** WordPress Scripts Functions */
|
/** WordPress Scripts Functions */
|
||||||
require ABSPATH . WPINC . '/functions.wp-scripts.php';
|
require ABSPATH . WPINC . '/functions.wp-scripts.php';
|
||||||
|
|
||||||
/** WordPress Styles Class */
|
/** WordPress Styles Class */
|
||||||
require ABSPATH . WPINC . '/class.wp-styles.php';
|
require ABSPATH . WPINC . '/class-wp-styles.php';
|
||||||
|
|
||||||
/** WordPress Styles Functions */
|
/** WordPress Styles Functions */
|
||||||
require ABSPATH . WPINC . '/functions.wp-styles.php';
|
require ABSPATH . WPINC . '/functions.wp-styles.php';
|
||||||
|
@ -190,7 +190,7 @@ function wp_get_script_polyfill( $scripts, $tests ) {
|
||||||
$src = add_query_arg( 'ver', $ver, $src );
|
$src = add_query_arg( 'ver', $ver, $src );
|
||||||
}
|
}
|
||||||
|
|
||||||
/** This filter is documented in wp-includes/class.wp-scripts.php */
|
/** This filter is documented in wp-includes/class-wp-scripts.php */
|
||||||
$src = esc_url( apply_filters( 'script_loader_src', $src, $handle ) );
|
$src = esc_url( apply_filters( 'script_loader_src', $src, $handle ) );
|
||||||
|
|
||||||
if ( ! $src ) {
|
if ( ! $src ) {
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
*
|
*
|
||||||
* @global string $wp_version
|
* @global string $wp_version
|
||||||
*/
|
*/
|
||||||
$wp_version = '6.1-alpha-54253';
|
$wp_version = '6.1-alpha-54254';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 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.
|
||||||
|
|
Loading…
Reference in New Issue