%s

', esc_html__( 'Glide error: the Composer autoloader is missing. Reinstall the plugin — or, if you are running it from source, install its dependencies and rebuild.', 'ghostlabs-glide' ) ); } ); return; } require_once $ghostlabs_glide_autoload; // The version-gated shared libraries this edition ships. // // The newest copy of each wins across every GhostLabs plugin on the site, so they // must be required here at include time — never inside a hook. Each registers its // version now and a winner is elected on plugins_loaded priority 0; a copy that // has not registered by then cannot win, and the kernel below constructs at // priority 10, after every election. // // `Edition` supplies the list rather than this file naming the files, because // which libraries exist is a property of the edition and only the edition knows // it. ⚠️ Not every edition ships every library, and some of them may not be // distributable everywhere this plugin is — so two `require_once` lines here // would put a package's name in every build, which no build flag can strip, // because this file is copied into every tier. // // Deliberately unguarded, unlike the autoloader above. These are hard // dependencies, so a missing file is not a degraded mode to tolerate: a class // drawn from one would fatal on first use anyway, further down the request where // the cause is no longer visible. Failing here names the exact file. foreach ( Edition::libraries() as $ghostlabs_glide_library ) { require_once $ghostlabs_glide_library; } // ⚠️ No text domain loading here. WordPress loads a .org-hosted plugin's translations itself // since 4.6, and WordPress.org refused the same call in Friendly Skies' shared bootstrap on // 2026-10-28. An edition distributed any other way loads its own through its kernel's providers. // Which wiring runs is a property of the edition, not of what happens to be on // disk, so the edition names its own kernel and this file never chooses. // // A `class_exists()` guard was rejected for the same reason it was rejected // inside the Kernel: it makes the tier a runtime accident rather than a stated // fact, and it fails silently — a build with a missing class would quietly serve // some other edition's feature set rather than saying so. $ghostlabs_glide_kernel = Edition::kernel(); add_action( 'plugins_loaded', function () use ( $ghostlabs_glide_kernel ) { try { $ghostlabs_glide_kernel::getInstance()->init()->run(); } catch ( \Exception $e ) { error_log( '[GhostLabs Glide] ' . $e->getMessage() ); } }, 10 );