Bug
The Site Exporter is completely unavailable when Ultimate Multisite is not fully set up (setup wizard not completed). In inc/class-wp-ultimo.php:182-193:
if (WP_Ultimo\Requirements::met() === false || WP_Ultimo\Requirements::run_setup() === false || ...) {
// Only loads Setup Wizard pages
return; // <-- exits before loading Site Exporter at line 584
}
The Site_Exporter::get_instance() call is at line 584, well after the early return. This means:
- The
Sites > Export & Import admin page is not registered
- The export/import row actions on the WordPress Sites page are not added
- The
wu_exporter_export() / wu_exporter_import() functions exist but the action handlers are never hooked
- CLI commands are not available
Why This Matters
The export feature is specifically designed to work on the WordPress default Sites page (not the Ultimate Multisite Sites page) via setup_wordpress_sites_integration(). This is meant to enable migration FROM other solutions. But if Ultimate Multisite setup hasn't been completed, the integration is never loaded — exactly when migration is most needed.
Expected
Export should work even when:
- Ultimate Multisite is installed but not fully set up
- The user is on a plain WordPress Multisite and wants to export sites before/during migration
- Running on a single site install (for migration to multisite)
Suggested Fix
Move Site_Exporter::get_instance() (or at least the setup_wordpress_sites_integration() portion) to BEFORE the requirements/setup check in init(). The WordPress Sites page integration has no dependency on Ultimate Multisite being fully set up — it only uses WordPress core functions (get_blog_details, wp_insert_site, wp_upload_dir, etc.).
Files to modify
EDIT: inc/class-wp-ultimo.php:165-193 — move Site_Exporter initialization before the setup gate, or extract the WordPress integration into a separate early-load path
EDIT: inc/site-exporter/class-site-exporter.php:40-61 — possibly split init into init_core() (WordPress integration, no deps) and init_full() (Ultimate Multisite integration)
Severity
High — defeats the purpose of having WordPress Sites page integration for migration scenarios.
aidevops.sh v3.13.11 plugin for OpenCode v1.3.17 with claude-opus-4-6 spent 6m and 13,148 tokens on this as a headless worker.
Bug
The Site Exporter is completely unavailable when Ultimate Multisite is not fully set up (setup wizard not completed). In
inc/class-wp-ultimo.php:182-193:The
Site_Exporter::get_instance()call is at line 584, well after the early return. This means:Sites > Export & Importadmin page is not registeredwu_exporter_export()/wu_exporter_import()functions exist but the action handlers are never hookedWhy This Matters
The export feature is specifically designed to work on the WordPress default Sites page (not the Ultimate Multisite Sites page) via
setup_wordpress_sites_integration(). This is meant to enable migration FROM other solutions. But if Ultimate Multisite setup hasn't been completed, the integration is never loaded — exactly when migration is most needed.Expected
Export should work even when:
Suggested Fix
Move
Site_Exporter::get_instance()(or at least thesetup_wordpress_sites_integration()portion) to BEFORE the requirements/setup check ininit(). The WordPress Sites page integration has no dependency on Ultimate Multisite being fully set up — it only uses WordPress core functions (get_blog_details,wp_insert_site,wp_upload_dir, etc.).Files to modify
EDIT: inc/class-wp-ultimo.php:165-193— move Site_Exporter initialization before the setup gate, or extract the WordPress integration into a separate early-load pathEDIT: inc/site-exporter/class-site-exporter.php:40-61— possibly split init intoinit_core()(WordPress integration, no deps) andinit_full()(Ultimate Multisite integration)Severity
High — defeats the purpose of having WordPress Sites page integration for migration scenarios.
aidevops.sh v3.13.11 plugin for OpenCode v1.3.17 with claude-opus-4-6 spent 6m and 13,148 tokens on this as a headless worker.