*/ private const FEATURE_HOOKS = array( Menu::class, AuthorSeoAdminHooks::class, OnPageSeoHooks::class, ScoreHooks::class, SocialCardsHooks::class, BreadcrumbsHooks::class, ImageSeoHooks::class, SchemaMarkupHooks::class, RobotsHooks::class, SeoOverviewColumnHooks::class, LinkSuggestionsAdminHooks::class, HreflangHooks::class, SitemapHooks::class, SiteVerificationHooks::class, RedirectsHooks::class, RssFeedSignatureHooks::class, SiteHealthSeoHooks::class, InstantIndexingHooks::class, TocHooks::class, TaxonomySeoHooks::class, RelatedPostsHooks::class, NotFoundManagerHooks::class, NotifyHooks::class, MarkdownForAgentsHooks::class, LlmsTxtHooks::class, ); /** * Register all available admin features. * * @return void */ public static function register(): void { Logger::log( 'debug', 'Admin\\Hooks::register triggered.' ); foreach ( self::FEATURE_HOOKS as $feature_class ) { if ( ! class_exists( $feature_class ) || ! method_exists( $feature_class, 'register' ) ) { self::log_debug( sprintf( 'admin feature skipped: %s', $feature_class ) ); continue; } $feature_class::register(); self::log_debug( sprintf( 'admin feature registered: %s', $feature_class ) ); } } /** * Log debug messages via Airygen logger. * * @param string $message The message to log. * * @return void */ private static function log_debug( string $message ): void { Logger::log( 'debug', '[admin] ' . $message ); } }