Selectively promote WordPress Full-Site-Editing structure between environments — without a full database migration.
Patterns · templates · template parts · global styles · navigation
FSE structure lives in the database. Moving some of it from staging to production today means a full DB sync — destructive to orders, users, and form entries — or tedious manual copy-paste.
Promote exactly the entities you choose. Everything else on the target is left untouched.
Export to a self-describing, git-trackable folder: a manifest, one JSON per entity, plus referenced media.
Re-applying updates the same entity instead of duplicating it — matched by stable identity or theme + slug.
Numeric IDs baked into block markup (images, reusable blocks, navigation) are re-resolved to the target site.
Referenced media is imported and de-duplicated by content hash, with URLs and IDs rewritten in the markup.
Preview exactly what would be created, updated, or left unchanged — without writing anything.
A bundle is just files you can review, commit, and move between environments however you like.
SiteCargo is a WP-CLI tool — WP-CLI is required.
# Composer (Bedrock and other Composer-managed sites) composer require itzmekhokan/sitecargo wp plugin activate sitecargo # WordPress.org directory (once approved) wp plugin install sitecargo --activate # Manual: download a release zip, unzip into wp-content/plugins/, activate
Three commands: export on the source, diff & apply on the target.
# On the source — export structure into a bundle wp sitecargo export --all --dir=my-bundle wp sitecargo export --patterns --templates --parts --global-styles --navigation --dir=my-bundle wp sitecargo export --patterns --slug=hero,call-to-action --dir=my-bundle # On the target — preview what would change (no writes) wp sitecargo diff --dir=my-bundle # On the target — apply (remaps IDs, sideloads media) wp sitecargo apply --dir=my-bundle --yes
SiteCargo is early software (0.1.1). The export → import loop is complete for five entity types.
| Phase | Scope | Status |
|---|---|---|
| 1–2 | Patterns + import side (diff / apply, ID remapping, media sideloading) | done |
| 2b | Templates, template parts, global styles (theme + slug identity) | done |
| 3a | Navigation menus + reference remapping | done |
| 3b | Selected posts/CPTs by slug (+ navigation-link ID remapping) | planned |
| 4 | Admin UI (checkbox tree + visual diff) | planned |
| 5 | Direct site → site push over REST (application passwords) | planned |