Apollo Helper
Companion WordPress plugin for the Apollo desktop app — extended apollo/v1 REST API. GPL-2.0-or-later.
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/nomad-computer/apollo-helper/archive/refs/heads/main.zipThe companion WordPress plugin for the Apollo desktop app:
an extended apollo/v1 REST API plus a few front-end hooks (SEO tags, announcement
bar, pretty-link and bio-link pages, traffic tracking).
Apollo works without it — it unlocks deeper cleanup, media, and edit operations over REST that core WordPress doesn't expose. It's optional and free, and its source is here in the open so you can see exactly what runs on your site.
Installation
Normally you don't install this by hand: the Apollo app offers to install and update
it for you over REST (or via SSH/Local). To install manually, upload the single
generated apollo-helper.php to wp-content/plugins/apollo-helper/ (or as a one-file
plugin in wp-content/plugins/) and activate it from Plugins in wp-admin.
Requires WordPress 5.6+ and PHP 7.2+.
It ships as one file — but you edit modules
apollo-helper.php is generated. Every install path assumes the plugin is a
single physical file: the helper's own /self-update route rewrites __FILE__,
the REST installer ships a one-file zip, the SSH/Local path writes one file, and
the Rust side bakes it in with include_str!. So the plugin stays one file on
disk, but the source is split into modules under src/ for
maintainability.
-
Edit the module in
src/(e.g. SEO code lives insrc/70-seo.php). -
Never edit
apollo-helper.phpdirectly — it carries an AUTO-GENERATED banner and your change would be overwritten on the next build. -
Rebuild from the repo root:
pnpm helper:buildpnpm helper:checkverifies the committedapollo-helper.phpmatches the modules (run it before committing; wire it into CI when a test workflow exists).
Both the modules and the generated apollo-helper.php are committed.
Module layout
Modules are concatenated in filename order (numeric prefixes fix the order).
00-header.php is the only file with the plugin header and define()s; every
module still starts with its own <?php line so it lints standalone, and the
build strips that opener from all but the first.
| Module | Responsibility |
|---|---|
00-header.php |
Plugin header, ABSPATH guard, define()s |
10-rest.php |
rest_api_init route registration (all apollo/v1 routes) |
20-sso.php |
One-time admin auto-login |
30-traffic.php |
Lightweight traffic tracking |
40-core-files.php |
Site info, WXR export, theme/plugin install, file management, self-update |
50-updates.php |
Plugin/theme update detection + safe (auto-rollback) updates + core update |
60-health.php |
Health scans (cleanup, integrity, repair, performance, storage) + security-config read |
70-seo.php |
SEO config, one-click SEO fixes, wp_head on-page tags |
80-marketing.php |
Announcement bar + pretty links |
85-bio.php |
Bio-links (Linktree-style) page |
90-media.php |
Media usage + unused/large/broken scans |
95-vulns.php |
Plugin vulnerability (CVE) lookup for the Updates lens |
Constraints for module files (keep concatenation safe)
- No
namespaceand nodeclare(strict_types=1)in any module — both must be the first statement of a file and would break when concatenated. Keep the global-function convention with theapollo_helper_prefix. - No closing
?>tag. - Keep the plugin header and every
define()in00-header.php; keep the two version strings there (* Version:andAPOLLO_HELPER_VERSION) in sync — the build fails if they disagree.
License
GPL-2.0-or-later — the same license WordPress ships under. You're free to use, study, modify, and redistribute it under those terms.