[wp-trac] [WordPress Trac] #64653: WP_Hook::resort_active_iterations() skips next priority when callback removes itself during execution

WordPress Trac noreply at wordpress.org
Fri Apr 10 02:20:05 UTC 2026


#64653: WP_Hook::resort_active_iterations() skips next priority when callback
removes itself during execution
--------------------------------------+--------------------------
 Reporter:  mrcasual                  |       Owner:  westonruter
     Type:  defect (bug)              |      Status:  reviewing
 Priority:  normal                    |   Milestone:  7.1
Component:  Plugins                   |     Version:
 Severity:  normal                    |  Resolution:
 Keywords:  has-patch has-unit-tests  |     Focuses:
--------------------------------------+--------------------------

Comment (by liaison):

 Test code. Put above wp-includes directory.
 {{{#!php
 <?php
 /**
  * Trac #64653: Optimized minimal reproduction
  */

 define( 'ABSPATH', dirname( __FILE__ ) . '/' );
 define( 'WPINC', 'wp-includes' );

 require_once ABSPATH . WPINC . '/plugin.php';

 echo "--- Starting Hook Test ---\n";


 $executed_priorities = [];

 // Priority 10
 add_action( 'test_hook', function () use ( &$executed_priorities ) {
     $executed_priorities[] = 10;
     echo "Executed: Priority 10\n";
 }, 10 );

 // Priority 50
 function wp_hook_bug_self_removing() {
     global $executed_priorities;
     $executed_priorities[] = 50;
     echo "Executed: Priority 50 (removing itself...)\n";

     remove_action( 'test_hook', 'wp_hook_bug_self_removing', 50 );
 }
 add_action( 'test_hook', 'wp_hook_bug_self_removing', 50 );

 // Priority 100
 add_action( 'test_hook', function () use ( &$executed_priorities ) {
     $executed_priorities[] = 100;
     echo "Executed: Priority 100\n";
 }, 100 );


 do_action( 'test_hook' );

 echo "--- Test Completed ---\n";


 if ( ! in_array( 100, $executed_priorities ) ) {
     echo "❌ BUG REPRODUCED: Priority 100 was skipped!\n";
 } else {
     echo "✅ TEST PASSED: Priority 100 was executed.\n";
 }
 }}}

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/64653#comment:8>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list