{"id":334370,"date":"2026-07-09T05:37:11","date_gmt":"2026-07-09T05:37:11","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/save-as-draft\/"},"modified":"2026-08-24T14:41:16","modified_gmt":"2026-08-24T14:41:16","slug":"clone-post-unsaved-changes","status":"publish","type":"plugin","link":"https:\/\/ta.wordpress.org\/plugins\/clone-post-unsaved-changes\/","author":13267134,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.3","stable_tag":"1.0.3","tested":"7.1","requires":"6.6","requires_php":"7.4","requires_plugins":null,"header_name":"Clone Post with Unsaved Changes to a Draft","header_author":"Alimuzzaman Alim","header_description":"Adds a \"Save As\" button to the block editor that clones the current post or page into a new draft.","assets_banners_color":"7b74ec","last_updated":"2026-08-24 14:41:16","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/clone-post-unsaved-changes\/","header_author_uri":"https:\/\/profiles.wordpress.org\/alimuzzamanalim\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":158,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"alimuzzamanalim","date":"2026-07-09 05:37:03"},"1.0.1":{"tag":"1.0.1","author":"alimuzzamanalim","date":"2026-07-09 06:13:13"},"1.0.3":{"tag":"1.0.3","author":"alimuzzamanalim","date":"2026-08-24 14:41:16"}},"upgrade_notice":{"1.0.3":"<p>Adds WordPress 7.1 iframe-editor coverage, bounded custom-post-type metadata cloning, Elementor\/WooCommerce adapters, safer retries, and clean production packaging.<\/p>","1.0.2":"<p>Improves Save As reliability with a default copy title, keyboard shortcut, and clearer confirmation when opening a new draft.<\/p>","1.0.1":"<p>Minor styling fix for sidebar button layout.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3601000,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3601000,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3601000,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3601000,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3601000,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250},"banner.svg":{"filename":"banner.svg","revision":3601000,"resolution":false,"location":"assets","locale":false}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3601024,"resolution":"1","location":"assets","locale":"","width":1440,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3601024,"resolution":"2","location":"assets","locale":"","width":1440,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3601024,"resolution":"3","location":"assets","locale":"","width":1440,"height":900}},"screenshots":{"1":"The Save As button in the block editor toolbar.","2":"The Save As dialog with title, \"don't ask\", and visibility options.","3":"The Save As action in the post sidebar."}},"plugin_section":[],"plugin_tags":[2814,2738,4665,24939,23177],"plugin_category":[],"plugin_contributors":[83509],"plugin_business_model":[],"class_list":["post-334370","plugin","type-plugin","status-publish","hentry","plugin_tags-clone","plugin_tags-copy","plugin_tags-draft","plugin_tags-duplicate-page","plugin_tags-duplicate-post","plugin_contributors-alimuzzamanalim","plugin_committers-alimuzzamanalim"],"banners":{"banner":"https:\/\/ps.w.org\/clone-post-unsaved-changes\/assets\/banner-772x250.png?rev=3601000","banner_2x":"https:\/\/ps.w.org\/clone-post-unsaved-changes\/assets\/banner-1544x500.png?rev=3601000","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/clone-post-unsaved-changes\/assets\/icon.svg?rev=3601000","icon":"https:\/\/ps.w.org\/clone-post-unsaved-changes\/assets\/icon.svg?rev=3601000","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/clone-post-unsaved-changes\/assets\/screenshot-1.png?rev=3601024","caption":"The Save As button in the block editor toolbar."},{"src":"https:\/\/ps.w.org\/clone-post-unsaved-changes\/assets\/screenshot-2.png?rev=3601024","caption":"The Save As dialog with title, \"don't ask\", and visibility options."},{"src":"https:\/\/ps.w.org\/clone-post-unsaved-changes\/assets\/screenshot-3.png?rev=3601024","caption":"The Save As action in the post sidebar."}],"raw_content":"<!--section=description-->\n<p><strong>Clone Post with Unsaved Changes to a Draft<\/strong> adds a <strong>Save As<\/strong> button to the WordPress block editor. One click copies the post you are editing \u2014 including its unsaved changes \u2014 into a brand-new draft and opens it, so you can branch, version, or template your content without manually duplicating anything.<\/p>\n\n<p>It works with supported Gutenberg posts, pages, and public REST-enabled custom post types. The plugin copies saved core fields and registered taxonomies, then applies supported unsaved block-editor changes. Copies are always drafts. Elementor 4.2.3 post\/page documents have a separate, version-pinned adapter that mirrors Elementor's persistent document defaults, captures the unsaved editor snapshot before any save, verifies that Elementor persisted the complete snapshot, and writes it only to the new draft; other versions and document types fail closed. WooCommerce products use WooCommerce's native duplicate workflow only when a block-editor integration invokes the server adapter; classic Woo product screens, product variations, and unsaved Woo-specific fields remain outside this contract.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>Save As button<\/strong> in the editor header, next to the native <em>Save<\/em> button.<\/li>\n<li>The same action is also available in the post sidebar and the editor's <strong>\u22ee (Options)<\/strong> menu.<\/li>\n<li>A confirmation dialog lets you set the new draft's title before copying.<\/li>\n<li>New draft titles end in <strong>(Copy)<\/strong>, ready for you to adjust.<\/li>\n<li><strong>\"Don't ask next time\"<\/strong> turns the dialog off for instant copies \u2014 Ctrl\/\u2318-click the button to bring it back.<\/li>\n<li>Press <strong>Ctrl\/\u2318 + Alt + S<\/strong> to open Save As without reaching for the mouse.<\/li>\n<li>Hide the toolbar and\/or sidebar button from the dialog; the <strong>\u22ee<\/strong> menu item always stays available.<\/li>\n<li>Copies are always created as <strong>drafts<\/strong>, so you never overwrite the original.<\/li>\n<li>Uses a dedicated authenticated endpoint with capability checks and request-id idempotency.<\/li>\n<li>Fully translatable (proper <code>wp_set_script_translations<\/code> integration).<\/li>\n<\/ul>\n\n<h4>How it works<\/h4>\n\n<p>The plugin sends a constrained snapshot of the current block-editor state to its own authenticated endpoint. The server reads the saved source post, creates a draft for the current user, then applies supported edits and redirects you to the new draft. Nothing is changed on the original post.<\/p>\n\n<h3>Development<\/h3>\n\n<p>Development happens on GitHub. Bug reports, feature requests, and pull requests are welcome:<\/p>\n\n<p><a href=\"https:\/\/github.com\/alimuzzaman\/clone-post-unsaved-changes\">https:\/\/github.com\/alimuzzaman\/clone-post-unsaved-changes<\/a><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>clone-post-unsaved-changes<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen.<\/li>\n<li>Edit any existing post or page \u2014 the <strong>Save As<\/strong> button appears in the editor toolbar.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20work%20on%20new%2C%20unsaved%20posts%3F\"><h3>Does it work on new, unsaved posts?<\/h3><\/dt>\n<dd><p>No. There is nothing to copy until a post has been saved at least once, so the button is hidden on brand-new posts.<\/p><\/dd>\n<dt id=\"does%20it%20copy%20my%20unsaved%20changes%3F\"><h3>Does it copy my unsaved changes?<\/h3><\/dt>\n<dd><p>Yes, for supported block-editor fields: title, content, excerpt, featured media, discussion settings, sticky state for posts, format, template, parent, menu order, REST taxonomies, and registered REST-visible meta. If another dirty field cannot be copied safely, Save As stops before creating a draft.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20pages%20and%20custom%20post%20types%3F\"><h3>Does it work with pages and custom post types?<\/h3><\/dt>\n<dd><p>Supported public post types must be available through the REST API and use the block editor. Attachments, autosaves, revisions, and trashed posts are not handled by the generic adapter. WooCommerce products require the native WooCommerce adapter and a block-editor integration; product variations and the standard classic Woo product editor remain unsupported. Custom post types that use Elementor require the separate Elementor adapter.<\/p><\/dd>\n<dt id=\"what%20gets%20copied%3F\"><h3>What gets copied?<\/h3><\/dt>\n<dd><p>Supported core post fields and registered taxonomies are copied, with current editor changes overlaid. The new draft belongs to the current user, has a fresh slug\/guid, and does not inherit the source password, dates, status, or author. Sticky state is copied for posts, subject to WordPress's sticky capability. Featured media is reused by ID. Registered <code>show_in_rest<\/code> meta keys are copied after capability and operational-key checks; a site developer can narrow the exact set with the <code>clone_post_unsaved_changes_allowed_meta_keys<\/code> filter. WooCommerce product meta is handled only by WooCommerce's native CRUD adapter. The generic adapter does not directly copy files, attachments, comments, revisions, child records, custom tables, or plugin-owned external data.<\/p><\/dd>\n<dt id=\"does%20it%20support%20elementor%20or%20woocommerce%20products%3F\"><h3>Does it support Elementor or WooCommerce products?<\/h3><\/dt>\n<dd><p>Elementor 4.2.3 post\/page documents use a separate, version-pinned adapter. Save As mirrors Elementor's persistent-setting defaults, captures the current document container settings and element tree without invoking Elementor's <code>save_builder<\/code>\/autosave request, writes the frozen data to a new draft through Elementor's document API, verifies the draft status, persisted element\/settings payload, and CSS generation, and checks that the source post, meta, and taxonomy relationships did not change. Other Elementor versions\/document types fail closed. WooCommerce products use WooCommerce's own CRUD duplicate workflow for saved product data; unsaved product-specific fields and the normal classic product editor are not claimed as supported.<\/p><\/dd>\n<dt id=\"i%20hid%20both%20buttons%20%E2%80%94%20how%20do%20i%20get%20them%20back%3F\"><h3>I hid both buttons \u2014 how do I get them back?<\/h3><\/dt>\n<dd><p>Open the editor's <strong>\u22ee (Options)<\/strong> menu and choose <strong>Save As<\/strong>; that item is always available. Uncheck the \"Hide\" options in the dialog.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Add WordPress 7.1 iframe-editor coverage for Save As, including unsaved title, content, and excerpt changes.<\/li>\n<li>Support REST-enabled custom post types with registered REST-visible metadata and direct source-state checks.<\/li>\n<li>Add version-pinned Elementor 4.2.3 and bounded WooCommerce native-duplication adapters.<\/li>\n<li>Make retries idempotent, expire request records, and keep development files out of production archives.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Prevent duplicate drafts when a Save As request fails for a reason unrelated to post meta.<\/li>\n<li>New copies now start with a <strong>(Copy)<\/strong> title, making them easier to distinguish.<\/li>\n<li>Add a Ctrl\/\u2318 + Alt + S keyboard shortcut for Save As.<\/li>\n<li>Show confirmation while the new draft is opening.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fix spacing of the sidebar button and update screenshots to full-page landscape views.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Duplicate or clone any post or page into a new draft \u2014 including unsaved changes \u2014 in one click, right from the block editor.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ta.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/334370","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ta.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ta.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ta.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=334370"}],"author":[{"embeddable":true,"href":"https:\/\/ta.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/alimuzzamanalim"}],"wp:attachment":[{"href":"https:\/\/ta.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=334370"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ta.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=334370"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ta.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=334370"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ta.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=334370"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ta.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=334370"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ta.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=334370"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}