Skip to content

How to Duplicate Page in WordPress

Duplicate pages in WordPress quickly and easily using native features or free plugins. This guide covers both methods, including tips for avoiding common issues and keeping your site organized.

Key Takeaways

  • WordPress doesn’t have a built-in duplicate feature by default, but you can enable it with a simple code snippet or plugin.
  • Using plugins like Duplicate Page or Yoast Duplicate Post is the easiest way to clone pages without coding.
  • Always update the title, slug, and meta data after duplicating to avoid SEO issues.
  • Test the duplicated page before publishing to ensure all elements work correctly.
  • Keep your site clean by deleting unused duplicates to improve performance and navigation.
  • Use child themes when duplicating pages with custom code to avoid losing changes during updates.

Why Duplicate a Page in WordPress?

Whether you’re launching a new product, creating a series of landing pages, or testing design changes, duplicating a page in WordPress saves time and ensures consistency. Instead of rebuilding layouts, forms, or content from scratch, you can copy an existing page and tweak it as needed. This is especially useful for marketers, developers, and content creators who manage multiple similar pages.

For example, if you run an online course platform, you might duplicate a course landing page template for each new course. Or, if you’re A/B testing, duplicating a page lets you compare two versions side by side. Whatever your goal, knowing how to duplicate a page efficiently is a valuable skill.

Method 1: Use a Plugin (Recommended for Beginners)

The easiest and most reliable way to duplicate a page in WordPress is by using a plugin. Plugins are user-friendly, require no coding, and often come with extra features like bulk duplication or role-based access.

Step 1: Install a Duplicate Page Plugin

Go to your WordPress dashboard. Navigate to Plugins > Add New. In the search bar, type “Duplicate Page” or “Duplicate Post.” Popular options include:

  • Duplicate Page – Lightweight and simple
  • Yoast Duplicate Post – Feature-rich and widely trusted
  • Post Duplicator – Great for custom post types

Click Install Now on your chosen plugin, then click Activate.

Step 2: Duplicate Your Page

Once activated, go to Pages > All Pages. Hover over the page you want to duplicate. You’ll see a new link appear: Duplicate This or Clone, depending on the plugin.

Click it, and WordPress will instantly create a copy. The new page will appear in your list with “(Copy)” added to the title and set to “Draft” status by default.

Step 3: Edit and Publish the Duplicate

Click Edit on the duplicated page. Update the title, URL slug, content, images, and any other elements to match your new purpose. For example, if you duplicated a “Contact Us” page for a new branch, change the address and phone number.

Don’t forget to update SEO settings using your SEO plugin (like Yoast or Rank Math) to avoid duplicate content penalties. When ready, click Publish.

Pro Tip: Customize Duplication Settings

Most plugins let you configure what gets copied. For instance, you can choose to duplicate only content, or include featured images, custom fields, and taxonomies. Access these settings under Settings > Duplicate Page (or similar) in your dashboard.

Method 2: Enable Native Duplication with Code

If you prefer not to use plugins, you can add a “Duplicate” link to your pages using a small code snippet. This method is great for developers or those who want to keep their site lightweight.

Step 1: Add Code to Your Theme’s functions.php

Go to Appearance > Theme File Editor. In the right sidebar, find and click on functions.php. Scroll to the bottom and paste the following code:

// Add Duplicate Page Link
add_filter('post_row_actions', 'duplicate_page_link', 10, 2);
add_filter('page_row_actions', 'duplicate_page_link', 10, 2);

function duplicate_page_link($actions, $post) {
if (current_user_can('edit_posts')) {
$actions['duplicate'] = 'Duplicate';
}
return $actions;
}

// Handle the duplication
add_action('admin_action_duplicate_post_as_draft', 'duplicate_post_as_draft');

function duplicate_post_as_draft() {
global $wpdb;
if (!isset($_GET['post']) || !isset($_GET['_wpnonce'])) {
wp_die('No post to duplicate has been supplied!');
}

$post_id = absint($_GET['post']);
$post = get_post($post_id);

if (!$post) {
wp_die('Post creation failed, could not find original post: ' . $post_id);
}

$args = array(
'comment_status' => $post->comment_status,
'ping_status' => $post->ping_status,
'post_author' => $post->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 . ' (Copy)',
'post_type' => $post->post_type,
'to_ping' => $post->to_ping,
'menu_order' => $post->menu_order
);

$new_post_id = wp_insert_post($args);

$taxonomies = get_object_taxonomies($post->post_type);
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);
}

$post_meta = get_post_meta($post_id);
foreach ($post_meta as $meta_key => $meta_values) {
if ('_wp_old_slug'