Creating a duplicate WordPress page or post means not only copy-and-pasting the words, but you can also keep the page template, images, and SEO data.
This saves a lot of time, especially when you want to create similar posts or create an updated content piece.
As with everything in WordPress, there are two main ways you can approach the task. Using plugins and doing the job manually.
This article will briefly explain what plugins are and why you need them to duplicate posts or pages. I’ll give you four plugins to copy them and elaborate on the steps to do it manually.
Let’s get started.
WordPress Duplicate Page and Posts Plugins
You might wonder why you need to install a plugin to just – practically – copy and paste content to another WordPress page or post?
You can easily copy and paste them quickly to a new draft, however, your featured images, and SEO settings, along with other metadata, aren’t duplicated. You’ll have to do the entire process of optimizing them all over again.
A plugin is there to help you automatically duplicate your posts and pages with all its settings and content intact.
Let’s take a look at some of the recommended plugins.
1. Duplicate Post

Duplicate Post is one of the most popular WordPress plugins for this purpose. It’s easy to use and copies not just your content but also comments, menu order, slug, and settings.
The plugin gives you the ability to add a prefix or suffix on your title to differentiate between the original post and the clone.
The process of duplicating using this plugin is relatively straightforward. Follow the instructions below:
- After you’ve installed and activated the plugin, head to your WordPress Admin Dashboard again; if you’re copying pages, go to the Pages section, then click on the All Pages subsection. If you’re duplicating posts, head to the Post section and click on the All Post subsection.
- On both subsections, hover above the page or post you want to duplicate, and there will be two options there: Clone and New Draft.
- Clicking Clone will copy the page and posts you want but won’t open the post editor’s duplicated post. Click New Draft if you want to clone a page or post and open it in the post editor.
- That’s it. You’ve successfully duplicated your post or pages.
2. Post Duplicator

As the name implies, this is another excellent alternative post plugin. Post Duplicator is a simple plugin that grants you the ability to create an exact copy of your post, including all the custom fields and taxonomies.
The process of duplicating content using this tool is pretty simple. Just follow these steps:
- Install and activate the plugin. Afterward, head over to your Dashboard and navigate to Posts and click on All Posts.
- On both subsections, hover above the post or page you want to duplicate and click on the Duplicate Post or Duplicate Page button.
- That’s it. You’ve successfully duplicated it.
You can customize some settings on your duplicated posts. Head to your Dashboard and click on Tools. Then head to the Post Duplicator section. There, you can set the post status, date, type, title, and slug.
3. Duplicate Page

This is another alternative for duplicating pages and posts. Duplicate Page allows you to reproduce custom post types and save the new copies as drafts, pending, public, or private.
The process to duplicate posts, pages, and custom post types is similar to previous plugins. Those steps are:
- Install and activate the plugin. Then head to the WordPress Admin Dashboard and find the Posts or Pages section. Click on All Posts or All Pages depending on what you want to duplicate.
- On both subsections, hover over the post or page you want to copy and click on the Duplicate This button.
- You’ve successfully duplicated your post or page. All that’s left is to save it either as drafts, pending, public, or private.
4. Duplicate Page and Post

This is another WordPress plugin that allows you to create exact copies of your WordPress posts and pages. Duplicate Page and Post enables you to duplicate a post or page without changing anything from the original.
To start duplicating posts and pages using this plugin, simply follow these steps:
- Install and activate the plugin. Afterward, head to your WordPress Admin Dashboard and go to the Posts or Pages section. Click on All Posts or All Pages, depending on what you’re copying.
- On both subsections, hover above the page or post you want to copy and click the Duplicate link.
- You’ve successfully cloned them, and they will appear with the same name but saved as a draft.
5. WooCommerce

Some of you may already know that WooCommerce – the eCommerce plugin for WordPress – has a built-in duplicate option. WooCommerce allows you to duplicate your product – so in a sense, a page or post – easily.
The process is as simple as the WordPress duplicate plugins mentioned above. The only difference is the location. Here are the steps:
- Head over to the Products section in WooCommerce.
- Hover above the products you want to duplicate and click on the Duplicate link.
- You’ll then be taken to an editing screen where you can make changes to the newly duplicated products before publishing them.
- That’s it. You’ve successfully duplicated a product.
Duplicate a Page or Post Manually
You can also duplicate WordPress posts or pages manually. It’s not as complicated as you might think. All you need to do is tweak some code.
The code snippet to enable page or post duplication in WordPress will be posted below. We recommend backing up your site before proceeding.
A small note on the code:
Color-coded texts in grey are PHP comments. They’re meant to help with readability and comprehension of what is happening in the script without technical knowledge.
/* * Function for post duplication. Dups appear as drafts. User will be redirected to the edit screen */ function rd_duplicate_post_as_draft(){ global $wpdb; if (! ( isset( $_GET['post']) || isset( $_POST['post']) || ( isset($_REQUEST['action']) && 'rd_duplicate_post_as_draft' == $_REQUEST['action'] ) ) ) { wp_die('No post to duplicate has been supplied!'); } /* * Nonce verification */ if ( !isset( $_GET['duplicate_nonce'] ) || !wp_verify_nonce( $_GET['duplicate_nonce'], basename( __FILE__ ) ) ) return; /* * get the original post id */ $post_id = (isset($_GET['post']) ? absint( $_GET['post'] ) : absint( $_POST['post'] ) ); /* * and insert all the original post data */ $post = get_post( $post_id ); /* * if you don't want to be the new post author, * change next couple of lines to this: $new_post_author = $post->post_author; */ $current_user = wp_get_current_user(); $new_post_author = $current_user->ID; /* * create the post duplicate, if post data exits */ if (isset( $post ) && $post != null) { /* * new post data array */ $args = array( 'comment_status' => $post->comment_status, 'ping_status' => $post->ping_status, 'post_author' => $new_post_author, 'post_content' => $post->post_content, 'post_excerpt' => $post->post_excerpt, 'post_name' => $post->post_name, 'post_parent' => $post->post_parent, 'post_password' => $post->post_password, 'post_status' => 'draft', 'post_title' => $post->post_title, 'post_type' => $post->post_type, 'to_ping' => $post->to_ping, 'menu_order' => $post->menu_order ); /* * place the post by wp_insert_post() function here */ $new_post_id = wp_insert_post( $args ); /* * get all current post terms and set them to the new post draft */ $taxonomies = get_object_taxonomies($post->post_type); // returns array of taxonomy names for post type, ex array("category", "post_tag"); foreach ($taxonomies as $taxonomy) { $post_terms = wp_get_object_terms($post_id, $taxonomy, array('fields' => 'slugs')); wp_set_object_terms($new_post_id, $post_terms, $taxonomy, false); } /* * duplicate all post meta just in two SQL queries */ $post_meta_infos = $wpdb->get_results("SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=$post_id"); if (count($post_meta_infos)!=0) { $sql_query = "INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value) "; foreach ($post_meta_infos as $meta_info) { $meta_key = $meta_info->meta_key; if( $meta_key == '_wp_old_slug' ) continue; $meta_value = addslashes($meta_info->meta_value); $sql_query_sel[]= "SELECT $new_post_id, '$meta_key', '$meta_value'"; } $sql_query.= implode(" UNION ALL ", $sql_query_sel); $wpdb->query($sql_query); } /* *head to the edit post screen for the new draft */ wp_redirect( admin_url( 'post.php?action=edit&post=' . $new_post_id ) ); exit; } else { wp_die('Post creation failed, could not find original post: ' . $post_id); } } add_action( 'admin_action_rd_duplicate_post_as_draft', 'rd_duplicate_post_as_draft' ); /* * Add the duplicate link to action list for post_row_actions */ function rd_duplicate_post_link( $actions, $post ) { if (current_user_can('edit_posts')) { $actions['duplicate'] = '<a href="' . wp_nonce_url('admin.php?action=rd_duplicate_post_as_draft&post=' . $post->ID, basename(__FILE__), 'duplicate_nonce' ) . '" title="Duplicate this item" rel="permalink">Duplicate</a>'; } return $actions; } add_filter( 'post_row_actions', 'rd_duplicate_post_link', 10, 2 );
The code above works only to duplicate posts. If you want to duplicate pages, simply replace the last line of code with:
add_filter('page_row_actions', 'rd_duplicate_post_link', 10, 2);
You just need to paste the code to the functions.php file in your WordPress. You can use either the built-in WordPress file editor, File Manager, or FTP client.
If you’re using the first option, here are the steps to do it:
- Head to your WordPress Admin Dashboard. Click on Appearance and head to the Theme Editor section.
- The Style.css file will then open by default. Navigate to the Theme Files section on the right side and paste the code.
- When you’re done, click the Update File button, and the changes will be applied instantly. There should be a Duplicate link when you hover above the posts or pages you want to copy.
Conclusion
Now you know how to duplicate a post or page in WordPress. You can copy them using WordPress plugins: Duplicate Post, Post Duplicator, Duplicate Page, and Duplicate Page and Post.
You can also use the built-in WooCommerce duplicator to duplicate your products easily.
An alternative to plugins is doing it manually. All you need to do is access the functions.php file in WordPress and paste the code we provided above.
All that’s left to do is start duplicating your post and pages. All the plugins are similar and free so choose the one that works best for you.
Good luck!
Leave a Reply