WordPress plugin
Cherrylift
Pushes selected content between WordPress sites, such as staging to production, and remaps every database ID on the way.
The problem
Teams often prepare content on a staging site and then need it in production. Copying the database overwrites whatever the live site created since the last sync: orders, accounts, form entries, comments. Copying content by hand is slow and error-prone.
Table-level tools don’t solve it either. A post’s featured image, parent page, terms and the image IDs inside its blocks all point to auto-increment IDs that differ from one site to the next.
The approach
Cherrylift exports only the entities you pick, plus everything they depend on, into a versioned manifest packaged as a zip.
- Dependency resolution: parent posts, terms and their ancestors, featured images, media and synced patterns used inside content are bundled automatically.
- Stable identity: every entity gets a UUID, so a later import updates the same item instead of creating a duplicate.
- ID remapping: post parents, thumbnails, term parents, block attributes (
id,ids,mediaId),wp-image-Nclasses and[gallery]shortcodes are rewritten to the target site’s IDs. - Dry run first: the import screen shows what will be created, updated or skipped before anything is written.
- Safe by default: uploaded packages are checked for size, paths, file types and checksums, and per-item WordPress permissions still apply.
Engineering
The plugin is tested with PHPUnit (unit and integration suites), PHPStan and PHPCS, plus Playwright end-to-end tests that run a real export and import between two sites. GitHub Actions run every check on each push and publish releases to wordpress.org.