diff --git a/wp-includes/class-wp-dependencies.php b/wp-includes/class-wp-dependencies.php
new file mode 100644
index 0000000000..1deb9a41fb
--- /dev/null
+++ b/wp-includes/class-wp-dependencies.php
@@ -0,0 +1,494 @@
+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;
+ }
+
+}
diff --git a/wp-includes/class-wp-scripts.php b/wp-includes/class-wp-scripts.php
new file mode 100644
index 0000000000..c8179da840
--- /dev/null
+++ b/wp-includes/class-wp-scripts.php
@@ -0,0 +1,727 @@
+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( "\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 = "\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( "\n", $this->type_attr, esc_attr( $handle ), $before_handle );
+ }
+
+ if ( $after_handle ) {
+ $after_handle = sprintf( "\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( "\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( "\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 `\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.' ),
+ '$l10n
',
+ 'wp_add_inline_script()
'
+ ),
+ '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 = <<\n%s\n\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 = '';
+ }
+}
diff --git a/wp-includes/class-wp-styles.php b/wp-includes/class-wp-styles.php
new file mode 100644
index 0000000000..b318d0fc17
--- /dev/null
+++ b/wp-includes/class-wp-styles.php
@@ -0,0 +1,464 @@
+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 = "\n";
+ }
+
+ $inline_style = $this->print_inline_style( $handle, false );
+
+ if ( $inline_style ) {
+ $inline_style_tag = sprintf(
+ "\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(
+ "\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(
+ "\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(
+ "\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 = '';
+ }
+}
diff --git a/wp-includes/class.wp-dependencies.php b/wp-includes/class.wp-dependencies.php
index 1deb9a41fb..631ed9e93e 100644
--- a/wp-includes/class.wp-dependencies.php
+++ b/wp-includes/class.wp-dependencies.php
@@ -2,493 +2,13 @@
/**
* 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
- * @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();
+_deprecated_file( basename( __FILE__ ), '6.1.0', WPINC . '/class-wp-dependencies.php' );
- /**
- * 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;
- }
-
-}
+/** WP_Dependencies class */
+require_once ABSPATH . WPINC . '/class-wp-dependencies.php';
diff --git a/wp-includes/class.wp-scripts.php b/wp-includes/class.wp-scripts.php
index f20964ead4..30e2d31126 100644
--- a/wp-includes/class.wp-scripts.php
+++ b/wp-includes/class.wp-scripts.php
@@ -2,726 +2,13 @@
/**
* 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
- * @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;
+_deprecated_file( basename( __FILE__ ), '6.1.0', WPINC . '/class-wp-scripts.php' );
- /**
- * 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( "\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 = "\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( "\n", $this->type_attr, esc_attr( $handle ), $before_handle );
- }
-
- if ( $after_handle ) {
- $after_handle = sprintf( "\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( "\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( "\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 `\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.' ),
- '$l10n
',
- 'wp_add_inline_script()
'
- ),
- '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 = <<\n%s\n\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 = '';
- }
-}
+/** WP_Scripts class */
+require_once ABSPATH . WPINC . '/class-wp-scripts.php';
diff --git a/wp-includes/class.wp-styles.php b/wp-includes/class.wp-styles.php
index 88c04eed8a..1a33a9e6b0 100644
--- a/wp-includes/class.wp-styles.php
+++ b/wp-includes/class.wp-styles.php
@@ -2,463 +2,13 @@
/**
* 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
- * @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;
+_deprecated_file( basename( __FILE__ ), '6.1.0', WPINC . '/class-wp-styles.php' );
- /**
- * 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 = "\n";
- }
-
- $inline_style = $this->print_inline_style( $handle, false );
-
- if ( $inline_style ) {
- $inline_style_tag = sprintf(
- "\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(
- "\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(
- "\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(
- "\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 = '';
- }
-}
+/** WP_Styles class */
+require_once ABSPATH . WPINC . '/class-wp-styles.php';
diff --git a/wp-includes/formatting.php b/wp-includes/formatting.php
index fbb9633d2a..a76e954e89 100644
--- a/wp-includes/formatting.php
+++ b/wp-includes/formatting.php
@@ -5795,14 +5795,14 @@ function _print_emoji_detection_script() {
if ( SCRIPT_DEBUG ) {
$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' ),
- /** 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' ),
);
} else {
$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' ),
);
}
diff --git a/wp-includes/script-loader.php b/wp-includes/script-loader.php
index 1c1d12a367..f9626dc42e 100644
--- a/wp-includes/script-loader.php
+++ b/wp-includes/script-loader.php
@@ -20,16 +20,16 @@
require ABSPATH . WPINC . '/class-wp-dependency.php';
/** WordPress Dependencies Class */
-require ABSPATH . WPINC . '/class.wp-dependencies.php';
+require ABSPATH . WPINC . '/class-wp-dependencies.php';
/** WordPress Scripts Class */
-require ABSPATH . WPINC . '/class.wp-scripts.php';
+require ABSPATH . WPINC . '/class-wp-scripts.php';
/** WordPress Scripts Functions */
require ABSPATH . WPINC . '/functions.wp-scripts.php';
/** WordPress Styles Class */
-require ABSPATH . WPINC . '/class.wp-styles.php';
+require ABSPATH . WPINC . '/class-wp-styles.php';
/** WordPress Styles Functions */
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 );
}
- /** 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 ) );
if ( ! $src ) {
diff --git a/wp-includes/version.php b/wp-includes/version.php
index 6dbb4fac8f..50177d3957 100644
--- a/wp-includes/version.php
+++ b/wp-includes/version.php
@@ -16,7 +16,7 @@
*
* @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.