*/ function get_required_include_files(): array { return [ 'includes/class-settings.php', 'includes/class-registry-content.php', 'includes/class-faq-filter.php', 'includes/class-display-blocks.php', 'includes/class-category-resolver.php', 'includes/class-faq-terms.php', 'ai/load.php', 'includes/class-term-order.php', 'includes/integrations/class-polylang.php', 'includes/integrations/class-yoast.php', 'includes/class-editor-rest.php', 'includes/class-setup-wizard.php', 'includes/class-setup-rest.php', 'includes/class-dashboard-setup.php', 'includes/class-admin-dashboard.php', 'includes/class-admin-settings.php', 'includes/class-admin-rest.php', 'includes/class-registry-push.php', 'includes/class-drive-capabilities.php', 'includes/class-plugin.php', ]; } /** * Require plugin files or register an admin notice when the install is incomplete. * * @param string $plugin_dir Absolute plugin directory path. * @return bool True when every required file was loaded. */ function load_required_includes( string $plugin_dir ): bool { $missing = []; foreach ( get_required_include_files() as $relative ) { $path = $plugin_dir . $relative; if ( ! is_readable( $path ) ) { $missing[] = $relative; continue; } require_once $path; } if ( empty( $missing ) ) { return true; } add_action( 'admin_notices', static function () use ( $missing ) { if ( ! current_user_can( 'activate_plugins' ) ) { return; } $list = implode( ', ', array_map( 'esc_html', $missing ) ); printf( '
%s %s
%s