{"id":320800,"date":"2026-06-13T05:20:47","date_gmt":"2026-06-13T05:20:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/crate\/"},"modified":"2026-06-13T05:20:16","modified_gmt":"2026-06-13T05:20:16","slug":"sitecargo","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/sitecargo\/","author":20437248,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.2","stable_tag":"0.1.2","tested":"7.0","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"SiteCargo","header_author":"Khokan Sardar","header_description":"Selectively promote WordPress full-site-editing structure and content (patterns, templates, parts, global styles, navigation) between environments \u2014 without a full database migration.","assets_banners_color":"647bed","last_updated":"2026-06-13 05:20:16","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/itzmekhokan\/sitecargo","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":29,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.2":{"tag":"0.1.2","author":"khokansardar","date":"2026-06-13 05:20:16"}},"upgrade_notice":{"0.1.2":"<p>Security hardening: exports are now confined to wp-content\/uploads\/sitecargo\/. Use <code>--dir=<\/code> (a folder name) rather than a filesystem path.<\/p>","0.1.1":"<p>Plugin renamed to SiteCargo. Early software \u2014 test in a non-production environment first.<\/p>","0.1.0":"<p>Initial release. Early software \u2014 test in a non-production environment first.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3570757,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3570757,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3570757,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3570757,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3570757,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250},"banner.svg":{"filename":"banner.svg","revision":3570757,"resolution":false,"location":"assets","locale":false}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.2"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[213218,16271,201618,4155,19979],"plugin_category":[59],"plugin_contributors":[214111],"plugin_business_model":[],"class_list":["post-320800","plugin","type-plugin","status-publish","hentry","plugin_tags-block-themes","plugin_tags-deployment","plugin_tags-full-site-editing","plugin_tags-migration","plugin_tags-staging","plugin_category-utilities-and-tools","plugin_contributors-khokansardar","plugin_committers-khokansardar"],"banners":{"banner":"https:\/\/ps.w.org\/sitecargo\/assets\/banner-772x250.png?rev=3570757","banner_2x":"https:\/\/ps.w.org\/sitecargo\/assets\/banner-1544x500.png?rev=3570757","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/sitecargo\/assets\/icon.svg?rev=3570757","icon":"https:\/\/ps.w.org\/sitecargo\/assets\/icon.svg?rev=3570757","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>WordPress full-site-editing structure \u2014 patterns, templates, template parts, global styles, and navigation \u2014 lives in the database. Moving <em>some<\/em> of it from staging to production today means either a full database sync (which is destructive to production-only data like orders, users, and form entries) or tedious manual copy-paste.<\/p>\n\n<p><strong>SiteCargo<\/strong> packs exactly what you choose into a portable, reviewable bundle and applies it to another site with stable identity, ID remapping, and media handling \u2014 never touching the data you didn't select.<\/p>\n\n<p>It is currently a <strong>WP-CLI tool<\/strong> (an admin user interface is on the roadmap).<\/p>\n\n<h4>How it works<\/h4>\n\n<ul>\n<li><strong>Export<\/strong> the entity types you choose into a self-describing bundle (a folder containing a manifest, one JSON file per entity, and the referenced media).<\/li>\n<li><strong>Diff<\/strong> a bundle against a target site to preview exactly what would be created, updated, or left unchanged \u2014 without writing anything.<\/li>\n<li><strong>Apply<\/strong> the bundle to the target: standalone posts (patterns, navigation) are matched by a stable identifier so re-applying updates the same item instead of duplicating it; templates, parts, and global styles are matched by theme and slug. Numeric IDs baked into block markup (images, reusable-block and navigation references) are remapped to the target site, and referenced media is imported and de-duplicated by content hash.<\/li>\n<\/ul>\n\n<h4>Supported entity types<\/h4>\n\n<ul>\n<li>Patterns (<code>wp_block<\/code>)<\/li>\n<li>Templates (<code>wp_template<\/code>)<\/li>\n<li>Template parts (<code>wp_template_part<\/code>)<\/li>\n<li>Global styles (<code>wp_global_styles<\/code>)<\/li>\n<li>Navigation menus (<code>wp_navigation<\/code>)<\/li>\n<\/ul>\n\n<p>Only templates\/parts that have been customized in the database are exported; unedited theme-file templates already ship with the theme.<\/p>\n\n<h4>External services<\/h4>\n\n<p>This plugin does <strong>not<\/strong> connect to any external service, send any data off-site, or phone home. Bundles are plain files on your own server that you move between environments however you like.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>sitecargo<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install through the Plugins screen.<\/li>\n<li>Activate the plugin through the Plugins screen.<\/li>\n<li><p>Use <a href=\"https:\/\/wp-cli.org\/\">WP-CLI<\/a> to run commands, for example:<\/p>\n\n<p>wp sitecargo export --all --dir=my-bundle\nwp sitecargo diff --dir=my-bundle\nwp sitecargo apply --dir=my-bundle --yes<\/p><\/li>\n<\/ol>\n\n<p>Exported bundles are always written inside <code>wp-content\/uploads\/sitecargo\/<\/code>; <code>--dir<\/code> is the folder name, not an arbitrary filesystem path.<\/p>\n\n<p>WP-CLI is required to use this plugin.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20replace%20wp%20migrate%20or%20a%20full%20database%20export%3F\"><h3>Does this replace WP Migrate or a full database export?<\/h3><\/dt>\n<dd><p>No. SiteCargo is deliberately <em>selective<\/em> \u2014 it promotes specific structure and content and leaves everything else (orders, users, comments, options) untouched. Use a full migration tool when you genuinely want to overwrite a whole site.<\/p><\/dd>\n<dt id=\"will%20applying%20a%20bundle%20create%20duplicates%20if%20i%20run%20it%20twice%3F\"><h3>Will applying a bundle create duplicates if I run it twice?<\/h3><\/dt>\n<dd><p>No. Applying is idempotent: patterns and navigation are matched by a stable identifier stored in post meta, and templates\/parts\/global styles are matched by theme and slug. A second apply updates the same items.<\/p><\/dd>\n<dt id=\"does%20it%20move%20my%20media%3F\"><h3>Does it move my media?<\/h3><\/dt>\n<dd><p>Yes. Referenced media is included in the bundle and imported into the target's media library, de-duplicated by content hash, with the relevant block markup (IDs and URLs) rewritten to point at the target's copy.<\/p><\/dd>\n<dt id=\"is%20it%20safe%20to%20run%20on%20production%3F\"><h3>Is it safe to run on production?<\/h3><\/dt>\n<dd><p>Always run <code>wp sitecargo diff<\/code> first to preview changes, and keep a backup. This is early (alpha) software.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Hardening: exported bundles are now always written inside <code>wp-content\/uploads\/sitecargo\/<\/code>. <code>--dir<\/code> is treated as a folder name (path separators and <code>..<\/code> traversal are stripped) and can no longer point writes at arbitrary locations on disk or the plugin folder.<\/li>\n<li><code>diff<\/code>\/<code>apply<\/code> resolve a bare <code>--dir<\/code> name against <code>uploads\/sitecargo\/<\/code>, while still accepting a full path to a bundle copied from another environment.<\/li>\n<li>Namespaced all PHP under the unique <code>ItzmeKhokan\\SiteCargo<\/code> prefix to avoid conflicts with other plugins and themes.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Renamed the plugin to SiteCargo.<\/li>\n<li>Exports now default to the uploads directory (wp-content\/uploads\/sitecargo\/) instead of the working directory; <code>--dir<\/code> still overrides.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Export \/ diff \/ apply for patterns, templates, template parts, global styles, and navigation.<\/li>\n<li>Stable cross-environment identity, block reference remapping, and content-hash media sideloading.<\/li>\n<li><code>diff<\/code> reports create \/ update \/ unchanged per entity.<\/li>\n<\/ul>","raw_excerpt":"Selectively promote WordPress full-site-editing structure and content between environments \u2014 without a full database migration.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/320800","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=320800"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/khokansardar"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=320800"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=320800"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=320800"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=320800"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=320800"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=320800"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}