diff --git a/inc/Abilities/CodeTaskAbilities.php b/inc/Abilities/CodeTaskAbilities.php index a574d1d..30e7b85 100644 --- a/inc/Abilities/CodeTaskAbilities.php +++ b/inc/Abilities/CodeTaskAbilities.php @@ -22,7 +22,11 @@ public function __construct() { return; } - add_action( 'wp_abilities_api_init', array( $this, 'register' ) ); + if ( function_exists( 'doing_action' ) && ( doing_action( 'wp_abilities_api_init' ) || did_action( 'wp_abilities_api_init' ) ) ) { + $this->register(); + } else { + add_action( 'wp_abilities_api_init', array( $this, 'register' ) ); + } self::$registered = true; } diff --git a/inc/Abilities/GitHubAbilities.php b/inc/Abilities/GitHubAbilities.php index a4eb9be..e10719a 100644 --- a/inc/Abilities/GitHubAbilities.php +++ b/inc/Abilities/GitHubAbilities.php @@ -1324,9 +1324,9 @@ private function registerAbilities(): void { ); }; - if ( doing_action( 'wp_abilities_api_init' ) ) { + if ( doing_action( 'wp_abilities_api_init' ) || did_action( 'wp_abilities_api_init' ) ) { $register_callback(); - } elseif ( ! did_action( 'wp_abilities_api_init' ) ) { + } else { add_action( 'wp_abilities_api_init', $register_callback ); } } diff --git a/inc/Abilities/GitSyncAbilities.php b/inc/Abilities/GitSyncAbilities.php index 2d2be17..db9a4e2 100644 --- a/inc/Abilities/GitSyncAbilities.php +++ b/inc/Abilities/GitSyncAbilities.php @@ -303,9 +303,9 @@ private function registerAbilities(): void { ); }; - if ( doing_action( 'wp_abilities_api_init' ) ) { + if ( doing_action( 'wp_abilities_api_init' ) || did_action( 'wp_abilities_api_init' ) ) { $register_callback(); - } elseif ( ! did_action( 'wp_abilities_api_init' ) ) { + } else { add_action( 'wp_abilities_api_init', $register_callback ); } } diff --git a/inc/Abilities/WordPressRuntimeAbilities.php b/inc/Abilities/WordPressRuntimeAbilities.php index 1295a1c..31089aa 100644 --- a/inc/Abilities/WordPressRuntimeAbilities.php +++ b/inc/Abilities/WordPressRuntimeAbilities.php @@ -147,7 +147,7 @@ private function registerAbilities(): void { ); }; - if ( function_exists( 'doing_action' ) && doing_action( 'wp_abilities_api_init' ) ) { + if ( function_exists( 'doing_action' ) && ( doing_action( 'wp_abilities_api_init' ) || did_action( 'wp_abilities_api_init' ) ) ) { $register_callback(); return; } diff --git a/inc/Abilities/WorkspaceAbilities.php b/inc/Abilities/WorkspaceAbilities.php index 2f80432..e471d77 100644 --- a/inc/Abilities/WorkspaceAbilities.php +++ b/inc/Abilities/WorkspaceAbilities.php @@ -2159,9 +2159,9 @@ private function registerAbilities(): void { } }; - if ( doing_action( 'wp_abilities_api_init' ) ) { + if ( doing_action( 'wp_abilities_api_init' ) || did_action( 'wp_abilities_api_init' ) ) { $register_callback(); - } elseif ( ! did_action( 'wp_abilities_api_init' ) ) { + } else { add_action( 'wp_abilities_api_init', $register_callback ); } } diff --git a/tests/smoke-late-ability-registration.php b/tests/smoke-late-ability-registration.php new file mode 100644 index 0000000..0b6f3b0 --- /dev/null +++ b/tests/smoke-late-ability-registration.php @@ -0,0 +1,82 @@ +