Skip to content

Commit 04ec8ac

Browse files
Restore private get_marked_for_enqueue() method since used via Reflection API in some plugins
This reverts commit 9915940. Co-authored-by: Peter Wilson <[email protected]>
1 parent cde9ccf commit 04ec8ac

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

src/wp-includes/class-wp-script-modules.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -531,6 +531,23 @@ private function get_import_map(): array {
531531
return array( 'imports' => $imports );
532532
}
533533

534+
/**
535+
* Retrieves the list of script modules marked for enqueue.
536+
*
537+
* Even though this is a private method and is unused in core, there are ecosystem plugins accessing it via the
538+
* Reflection API. The ecosystem should rather use {@see self::get_queue()}.
539+
*
540+
* @since 6.5.0
541+
*
542+
* @return array<string, array> Script modules marked for enqueue, keyed by script module identifier.
543+
*/
544+
private function get_marked_for_enqueue(): array {
545+
return wp_array_slice_assoc(
546+
$this->registered,
547+
$this->queue
548+
);
549+
}
550+
534551
/**
535552
* Retrieves all the dependencies for the given script module identifiers, filtered by import types.
536553
*

tests/phpunit/tests/script-modules/wpScriptModules.php

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ public function test_enqueue_with_empty_id() {
204204
* @covers ::wp_deregister_script_module()
205205
* @covers WP_Script_Modules::deregister()
206206
* @covers WP_Script_Modules::get_queue()
207+
* @covers WP_Script_Modules::get_marked_for_enqueue()
207208
* @covers WP_Script_Modules::set_fetchpriority()
208209
* @covers WP_Script_Modules::print_head_enqueued_script_modules()
209210
* @covers WP_Script_Modules::print_enqueued_script_modules()
@@ -222,6 +223,12 @@ public function test_comprehensive_methods( bool $use_global_function, bool $onl
222223
}
223224
};
224225

226+
$reflection_class = new ReflectionClass( wp_script_modules() );
227+
$get_marked_for_enqueue = $reflection_class->getMethod( 'get_marked_for_enqueue' );
228+
if ( PHP_VERSION_ID < 80100 ) {
229+
$get_marked_for_enqueue->setAccessible( true );
230+
}
231+
225232
$register_and_enqueue = static function ( ...$args ) use ( $use_global_function, $only_enqueue ) {
226233
if ( $use_global_function ) {
227234
if ( $only_enqueue ) {
@@ -242,7 +249,11 @@ public function test_comprehensive_methods( bool $use_global_function, bool $onl
242249

243250
// Minimal args.
244251
$register_and_enqueue( 'a', '/a.js' );
245-
$this->assertSame( array( 'a' ), wp_script_modules()->get_queue() );
252+
$this->assertSame( array( 'a' ), wp_script_modules()->get_queue(), 'Expected queue to match.' );
253+
$marked_for_enqueue = $get_marked_for_enqueue->invoke( wp_script_modules() );
254+
$this->assertSame( wp_script_modules()->get_queue(), array_keys( $marked_for_enqueue ), 'Expected get_queue() to match keys returned by get_marked_for_enqueue().' );
255+
$this->assertIsArray( $marked_for_enqueue['a'], 'Expected script module "a" to have an array entry.' );
256+
$this->assertSame( '/a.js', $marked_for_enqueue['a']['src'], 'Expected script module "a" to have the given src.' );
246257

247258
// One Dependency.
248259
$register( 'b-dep', '/b-dep.js' );

0 commit comments

Comments
 (0)