Duplicating content is one of the most frequent tasks in any WordPress editorial or development workflow. Whether you're creating a new landing page based on an existing template, duplicating a WooCommerce product with minor variations, or cloning a service page for a new location — WordPress provides no native duplicate button. This guide covers every method available, from manual database operations to one-click plugin solutions.
Why WordPress Doesn't Include a Native Duplicate Function
WordPress's post architecture stores content across multiple database tables: wp_posts (the main post data), wp_postmeta (custom fields and meta), and relationships to taxonomies via wp_term_relationships. A complete duplicate must copy across all three tables, generate a new GUID, assign a new slug, handle attachment relationships, and account for plugin-specific meta fields. This complexity is why no single "duplicate" button exists in core — and why a dedicated solution handles it better than a manual workaround.
Method 1 — Manual Duplication via WordPress Admin
The simplest manual approach: open the post you want to duplicate, copy the entire content, create a new post, paste the content, set a new title and slug, then manually re-apply categories, tags, featured image, and any meta fields. This works for simple posts with no custom fields, but breaks down quickly for posts with ACF data, Elementor builder data, or extensive post meta — where copying just the visible content means losing all the underlying structure.
Method 2 — Manual PHP with wp_insert_post()
For developers who need to duplicate a post programmatically, WordPress provides wp_insert_post() to create a new post and get_post_meta() / add_post_meta() to copy meta fields. A complete manual implementation needs to handle post data, all meta keys, featured image attachment, taxonomy terms, and the post status.
This approach requires custom code and ongoing maintenance as plugins add new meta keys. It is appropriate for one-time migration scripts or developer tools, but not for an ongoing editorial workflow.
Method 3 — One-Click Plugin Duplication
A dedicated duplication plugin adds a Duplicate link to the row actions on every post list table in WordPress admin. Clicking it creates a full copy — post data, all meta, featured image, taxonomy terms — and saves it as a draft. This is the recommended approach for most sites because it handles all edge cases automatically.
When evaluating duplication plugins, the critical criteria are: does it copy all custom field data (ACF, CMB2, Meta Box, Pods)? Does it handle Gutenberg block content correctly? Does it duplicate WooCommerce product-specific data? Does it preserve the relationship between a post and its attachments?
What Does a Complete WordPress Duplication Copy?
A thorough duplication plugin should copy all of the following:
- Post title (with a -copy suffix to avoid slug collision)
- Post content — both Gutenberg block structure and Classic Editor HTML
- Excerpt field
- Featured image (thumbnail ID)
- All post meta — including every key from wp_postmeta for that post ID
- ACF Pro fields (stored as post meta, duplicated with all custom field keys)
- Taxonomy assignments — categories, tags, and all custom taxonomies
- Post author (duplicated post should default to current user or original author)
- Post status — always saved as draft, not published, to avoid immediate live duplication
How to Duplicate WordPress Pages
Pages in WordPress work identically to posts at the database level. A duplication plugin that works for posts will work for pages. The key difference is page hierarchy: if the original page has a parent page, the duplicated version should either inherit the same parent or be created at the root level (depending on your workflow). A well-designed plugin handles this transparently — EasyDuplicate, for example, preserves the parent page relationship in the duplicate.
How to Duplicate Custom Post Types (CPTs)
Custom post types are registered by themes and plugins to create new content types — portfolio items, testimonials, events, recipes, etc. At the database level, CPTs use the same wp_posts table with a different post_type value. A plugin that uses the generic WordPress duplication hooks (using a filter on all post types rather than only posts and pages) will automatically support any CPT without needing explicit configuration.
To verify a plugin duplicates your specific CPT, go to the list table for that CPT in WordPress admin (e.g., Portfolio under your theme's menu) and check whether the Duplicate row action appears. If it does, duplication is supported. If not, you may need a plugin that explicitly registers the duplicate action for all post types, including custom ones.
How to Duplicate WooCommerce Products
WooCommerce products are a custom post type (post_type = 'product' or 'product_variation'). WooCommerce stores product-specific data as post meta — price, SKU, stock quantity, weight, dimensions, product type, attribute values, and more. A complete WooCommerce product duplication must copy all of this meta, including the _sku field (which should be emptied or modified in the copy to avoid duplicate SKUs), _regular_price, _sale_price, _stock, _stock_status, and all product attribute meta keys.
WooCommerce itself includes a basic duplicate product function in the backend for individual products, but it does not handle variable products (with multiple SKU variations) or all third-party product meta from extensions. A dedicated duplication plugin with explicit WooCommerce support covers these edge cases.
How to Duplicate Taxonomy Terms (Categories and Tags)
Taxonomy terms — WordPress categories, tags, and any custom taxonomy terms — are stored separately from posts in wp_terms, wp_termmeta, and wp_term_taxonomy. Duplicating a term means creating a new row in each of these tables, preserving the description, parent term, and all custom term meta. This is more involved than post duplication and is not supported by most basic duplication plugins.
Common scenarios where taxonomy duplication is valuable: cloning a complex WooCommerce product category structure for a new product range, duplicating a parent category with all its children, or copying a tag with associated term meta from an SEO plugin.
How to Duplicate WordPress Navigation Menus
WordPress navigation menus are stored as a special taxonomy (nav_menu) with menu items as posts of type nav_menu_item. Duplicating a menu means duplicating both the taxonomy term itself and all the nav_menu_item posts that belong to it — including their parent-child nesting relationships, custom labels, URLs, CSS classes, and link targets. This is significantly more complex than standard post duplication and requires explicit menu duplication logic.
Choosing the Right Duplication Plugin
For most WordPress sites, a free plugin like EasyDuplicate covers everything needed: posts, pages, CPTs, taxonomy terms, and menus — with full meta, ACF, and WooCommerce support. The plugin adds a Duplicate link to every applicable list table in WordPress admin, requires zero configuration, and imposes no performance cost on the front end.
For enterprise workflows with custom duplication logic — specific meta fields to exclude, post-duplication hooks to trigger, or integration with editorial approval workflows — a developer can hook into the plugin's filter API to customize the duplication process without modifying the plugin itself.
Frequently Asked Questions About WordPress Duplication
Will duplicating a post create duplicate content issues for SEO?
No, because duplicated posts are always saved as drafts. A draft post is not publicly accessible and is not indexed by search engines. Only publish a duplicated post after you have made it sufficiently different from the original — changed the title, slug, and primary content — to avoid duplicate content penalties.
Does duplication work with WPML or Polylang multilingual sites?
Multilingual plugins like WPML and Polylang store language relationships as post meta. A duplication plugin that copies all post meta will preserve these relationships, but the behaviour depends on how the multilingual plugin handles new posts. WPML typically prompts for language assignment when a new post is created. EasyDuplicate is tested for compatibility with both WPML and Polylang.
Does it work with Elementor and other page builders?
Yes. Elementor stores its layout data as post meta with the key _elementor_data. A duplication plugin that copies all post meta will copy the complete Elementor layout to the new post. The same applies to Divi (et_pb_builder_version and related meta), Beaver Builder, and most other page builders that store data as post meta.