WordPress is a very powerful tool that makes it easy to build a new website. However, as you’re creating a site you might want to duplicate an existing page, only to find that feature doesn’t exist. Currently, WordPress duplicate page isn’t a feature that’s available right out of the box.
However, there are a few different ways you can easily add this feature to your site so you can get back to building your site. Below, you’ll learn three different ways you can create a WordPress duplicate page.
Table of Contents
Why Create a WordPress Duplicate Page?
There are a lot of reasons you’ll want to duplicate a page in WordPress. For example, maybe you’ve created a product page that converts well, and you’d like to use the same structure for another product. Instead of creating the page from scratch you can duplicate the page, make some changes, and then publish your new page.
The same goes for any page on your WordPress website where you want to create a new page with a similar structure or similar content. It’s a huge time saver being able to duplicate a page you’ve already finished rather than having to reinvent the wheel.
Note that when duplicating pages, you want to make sure that you’re not publishing two pages that have the same content. This can negatively impact your SEO and cause your search engine rankings to drop.
With that said, let’s show you three ways you can create a WordPress duplicate page.
Method 1. Create a WordPress Duplicate Page Manually
The easiest way to create a WordPress duplicate page is by doing it manually. If you only need to duplicate pages on occasion, then this is a solid solution. However, when you’re duplicating a post manually, any additional page data won’t be copied over, and you’ll need to enter it manually.
First, navigate to “Pages > All Pages” and open up the page that you want to duplicate.

Then, once you’re inside the page editor, you need to select all blocks. You can do this in two ways:
- Select all blocks with CTRL + A or Command + A if you’re using a Mac
- Copy the entire selection with CTRL + C
On the right-hand side of the screen, you’ll see the number of blocks that you’ve selected. If you’ve only selected a single block, then use CTRL + A to select every single block on the page.

Another option to copy every block is to click on the three menu dots, then under “Tools”, click on “Copy all blocks”.

Then, all you need to do is open up a new Page and then paste all of that content into the page. Remember that the title and all page settings aren’t copied over, so you’ll need to add a new title and change the page settings manually.
Method 2. Create a WordPress Duplicate Page Using WordPress Plugins
The second method lets you create a WordPress duplicate page or post on your site with a single click. This lets you easily duplicate a page without having to manually copy over all your content. Plus, all of the page settings and custom fields are duplicated as well. You’ll even see how a plugin can help you duplicate multiple pages or posts at the same time.
Let’s get to it.
Duplicate a Page Using Duplicate Page Plugin
The first plugin we’ll use is the Duplicate Page plugin. To do this, navigate to “Plugins > Add New” and then search for “Duplicate Page”, and then click the “Install Now” button. After that, click “Activate”.

Now, when you navigate to the list of Pages or Posts, you’ll see an additional action called “Duplicate This”. All you need to do is click the link, and the plugin will automatically create a duplicate of that page and save it as a draft.

This plugin creates a duplicate with all of the existing page data, including plugin settings, custom fields, and more.
To change the default plugin settings, navigate to “Settings > Duplicate Page”.
Here, you can adjust the following settings:
- Choose the default page editor (classic or Gutenberg)
- Change the status of the duplicate post to draft, publish, private, or pending
- Redirect to the all posts list or the page you just duplicated after clicking the duplicate link
- Create a duplicate post suffix that will appear after the title of the duplicate post

Duplicate a Page Using Yoast Duplicate Post
Another plugin you can use to create a WordPress duplicate page or post is the Yoast Duplicate Post plugin. To install this plugin, navigate to “Plugins > Add New” and search for “Yoast Duplicate Post”, then click the “Install Now” button. After that, click “Activate” to activate the plugin on your site.

Now, when you navigate to your list of pages or posts, you’ll see new options to clone, create a new draft, or rewrite and republish a page or post.

Here’s a bit more detail on what each option does:
- Clone. This creates a copy of your page or post and saves the new page or post as a draft.
- New draft. This creates a copy of the page or post and takes you directly to the editor.
- Rewrite & Republish. This creates a copy of a post that’s already published and lets you overwrite the existing content when you click “Republish” from the post editor screen.
If you need to duplicate more than one page or post, then this plugin can help you too. All you need to do is click on the checkbox for every page or post you want to duplicate, then select “Clone” or “Rewrite & Republish” from the bulk actions drop-down.

Note: Like using the Duplicate Posts plugin above, Yoast Duplicate Post also migrates over all of the page and post data, including custom fields and other SEO data, when you duplicate a page.
You can also adjust the plugin settings to give you more control over how your content is duplicated. Navigate to “Settings > Duplicate Post”. In the “What to copy” tab, you choose which page/post elements you want the plugin to duplicate automatically.

Below that, you’ll find additional customization options like:
- Title Prefix. This will add a prefix to the title for each duplicate page you create. It’ll add this before the title and make it easier to see your duplicate content inside your WordPress dashboard.
- Title Suffix. This is similar to the prefix above, but the suffix will come after the original page or post title.
- Do not copy these fields. Here, you can add custom fields that you don’t want to be copied over when you duplicate.
- Do not copy these taxonomies. This lets you control whether categories and tags are copied over during duplication.
Next, click the “Permissions” tab to set the user roles that have access to the duplication feature. By default, only administrators and editors have access to this feature, but you can add more users by checking the box next to each role.

You can also enable or disable the duplicate feature for specific post types. Just check the box for additional post types you want to enable.
Next, on the “Display” tab, you can customize where the duplicate link shows up in your WordPress dashboard. You can choose which links to display and where you want them to display by checking or unchecking the box.

Method 3. Create a WordPress Duplicate Page With a Custom Function
If you don’t want to use a plugin or copy over your page content manually, then you can create your own custom function.
Keep in mind that this method is more advanced. So, if you’re not comfortable adding code to WordPress, you should use one of the other two methods above.
One of the easiest ways to add code to WordPress is by using a plugin called Code Snippets. This plugin makes it easy to add code to WordPress without having to modify your theme’s functions.php file.
First, you need to go to “Plugins > Add New”, then search for “Code Snippets” and click “Install Plugin”. After that, click “Activate,” and the plugin will be active on your website.

Then, go to “Code Snippets > Add Snippet”. Then, hover over the “Add Your Custom Code” box and click “Add Custom Snippet” and select “PHP Snippet” when asked for the code type.

For the title, add “Duplicate pages and posts” or something that’ll help you remember what this custom function does. Then, in the “Code Preview” field, add the code snippet below. You can also view the entire code snippet on GitHub.
<?php
/*
* Function for post duplication. Dups appear as drafts. User is 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 all the original post data then
*/
$post = get_post( $post_id );
/*
* if you don't want current user to be the new post author,
* then 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;
/*
* if post data exists, create the post duplicate
*/
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.'-new',
'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
);
/*
* insert the post by wp_insert_post() function
*/
$new_post_id = wp_insert_post( $args );
/*
* get all current post terms ad 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);
}
/*
* finally, redirect 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 );
add_filter('page_row_actions', 'rd_duplicate_post_link', 10, 2);
Once you’re finished, make sure to click the “Activate” button to make this code snippet live. Once it’s active, it will add a “Duplicate” link to WordPress that lets you create a copy of a page or post and save it as a draft. When you click the link, it will automatically take you to the page or post editor.
The URL slug for the post will be the same with a “-new” suffix added to the end. You can change this by modifying the inside the ‘-new’ portion of the following code:
'post_name' => $post→post_name.'-new',
You can also add a suffix to the post title, so you can easily distinguish your duplicate pages inside your WordPress dashboard. Simply modify the following code snippet.
'post_title' => $post->post_title.' - Copy',
The code snippet above will change the title of the duplicate article to “Post Title – Copy”.
Finally, the current code snippet will change the post or page author to the current user who’s editing the post. If you want to keep the page or post author the same as the original author, then you’ll need to replace these two lines of code:
$current_user = wp_get_current_user();
$new_post_author = $current_user->ID;
With this single line of code:
$new_post_author = $post->post_author;
WordPress Duplicate Page FAQs
Does WordPress have a built-in feature to duplicate pages?
No, WordPress does not have a built-in feature to duplicate pages. To duplicate a page, you can do it manually, use a WordPress plugin, or add code to WordPress to add the functionality to your website.
Will duplicating a page impact website performance?
No, duplicating a page shouldn’t impact website performance. Usually, the main things that impact loading speeds are having too many WordPress plugins, lack of website caching, unoptimized images, and poor website hosting.
Does duplicating a page impact SEO?
If you have multiple published pages on your website with identical content, then this can negatively impact your search engine rankings since search engines won’t know which page to index. However, you can create a WordPress duplicate page, then change the content, and you’ll be just fine.
Can you duplicate a WordPress page without a plugin?
The only ways to duplicate a WordPress page without a plugin are by copying over all of the content manually to a new page or adding code to WordPress that adds the duplication feature to your WordPress dashboard.
Closing Thoughts: WordPress Duplicate Page Makes Content Creation Easier
By now, you should have a better understanding of how you can duplicate a page or post in WordPress. There are currently three main ways you can accomplish this:
- You can copy and paste over all of your pages or post content manually. However, this won’t automatically copy over any custom fields or custom page settings. Plus, it can be time-consuming.
- You can use the Duplicate Page or Yoast Duplicate Post plugins to speed up the duplication process. You can also duplicate multiple pages/posts, and all page/post data will be duplicated too.
- You can add a custom function to WordPress that adds similar functionality as the plugins above, but doesn’t require installing another WordPress plugin.
Now, over to you. Have you had to create a WordPress duplicate page? Which of the three methods above did you use? Please share your thoughts and experience in the comments below!
Leave a Reply