Pricing
Written by Editorial Team on June 1, 2020

How to Duplicate a Page in WordPress With Or Without A Plugin?

The process of creating a duplicate of your existing WordPress posts or pages can be useful in many situations. You can use the copy as a template for future posts, or a reference when you redesign your website. Make no mistake—knowing how to duplicate a page in WordPress is a handy trick!

The best part, duplicating a page in WordPress takes just a couple of minutes at most.

There are multiple ways to clone a page or post in WordPress. This tutorial will explain those different methods, with step by step guide for WordPress beginners.

Let's dive in, shall we?

Duplicating Page or Post with a WordPress plugin

This is by far the easiest way to duplicate a page or post in WordPress. Using a WordPress duplicator saves you time and effort, plus you will be able to 1-click duplicate posts and pages without any coding skills.

In this case, the Duplicate Post plugin is one of the go-to options for this purpose. There are a few more plugins that we will share apart from this.

How To Duplicate A Post Easily Using WordPress
~Click the 'Clone' button to duplicate a WordPress post

Besides from duplicating the WordPress content, you can also duplicate the comments, slug, menu order, and much more which comes in handy at times.

This plugin also allows you to add title prefix or a suffix, so you’ll know which one is the original and which one is the copy.

Let’s say you set “Copy of” as the title prefix. If you duplicate a post titled “What is WordPress,” the duplicate will be named “Copy of What is WordPress.” Therefore, you won't ever be confused after the duplication process.

How do clone your WordPress posts or pages using Duplicate Post plugin?

  1. Install and activate the plugin.
  2. Go to your WordPress dashboard, then click on Pages » All Pages (if you want to clone a page) or Post » All Post (if you’re going to clone a post).
  3. Hover over the page or post you want to clone, and you will see two new options there — Clone and New Draft.
  4. Click Clone to duplicate the selected post, or choose New Draft to create a cloned version of the chosen post and open it in the post editor.

In just several seconds, you are now able to duplicate a WordPress post or page quickly, without losing any information or experience any downtime.

Duplicating a page or post in WordPress using Visual Composer

Another plugin that does cloning of a page or post using templates is Visual Composer.

This drag and drop builder allows you to easily duplicate a page or post in WordPress in just a few clicks.

Visual Composer is a drag and drop builder from WPBakery which is used by many WordPress professionals.

Visual Composer Plugin To Duplicate Posts In WordPress
~Visual Composer plugin makes cloning a page easy

Visual Composer plugin also allows you to choose a wide range of pre-made templates (so no coding skills required). First, choose a design or page layout of your choice (you can also create one from scratch).

Next, “Save current page as a template” and give the template a name.

There, you are done!

The next time you are creating a new page, simply select your template from the templates menu, and it will be used on the new page.

Frontend WordPress editors

Visual editors such as Beaver Builder, Thrive Architect and Divi Builder allow you to quickly build standardize layouts quickly and effectively.

Duplicate a WordPress post using Advanced Layout Builder

Some WordPress themes come with inbuilt layout builder and you can use it to create duplicate posts in WordPress.

For example, Enfold theme (found on Envato) comes with Advanced Layout Builder which you can easily copy and reuse a page or post design.

Enfold Theme Advanced Layout Builder Duplicate WordPress Pages
~Enfold Theme comes with Advanced Layout Builder

This feature allows you to easily clone a page by saving it as a template and reusing it at a different time.

Duplicate posts and pages with Post Duplicator plugin

The Post Duplicator plugin is a popular WordPress plugin that allows you to create an exact replica of the selected post while retaining the custom fields and custom taxonomies as well.

It is a free plugin that can be downloaded directly from the WordPress repository.

How To Duplicate Posts And Pages Using Post Duplicator Plugin for WordPress
~Post Duplicator plugin

This plugin is only useable in cloning or duplicating a WordPress post (not page). Here’s how to duplicate a WordPress post using Post Duplicator plugin:

  1. Install and activate the Post Duplicator plugin.
  2. Hover over the post or the page you want to duplicate, and click Duplicate Post or Duplicate Page.

There are some settings that you can customize for the duplicated posts. Go to Tools » Post Duplicator and set the post status (draft, published, or same as the original), post type, and post date.

You can also adjust the duplicate’s title and slug from the settings when duplicating the post.

Clone a WordPress page or post with the Duplicate Page and Post plugin

The Duplicate Page and Post plugin enables you to clone WordPress pages and posts quickly. The plugin can duplicate a page or post without changing its content, title, or style—which comes in handy.

Using this plugin is relatively easy. You just need to follow these steps:

How To Clone A WordPress Page And Post Using Plugin
~Clone a WordPress page and post using 3rd party plugin
  1. After installing and activating the plugin, go to the All Pages or All Posts menu, depending on what you want to duplicate.
  2. Hover over the post or page you want to clone and click Duplicate.
  3. The cloned post or page will appear as a new draft with the same name as the original. Open the copy to edit the content.

When it comes to duplicating a WordPress page/post, you can't go wrong with the Duplicate Page and Post plugin!

How to duplicate a WordPress page or post without using plugins?

This is a little unconventional way and it is only recommended for those who know exactly what they are doing. A wrong move or action could lead to errors to your site.

However, fret not. Follow these steps to easily duplicate a WordPress page or post without using any plugin.

In order to duplicate a WordPress page or post without using plugin, you would need to tweak the codes in your WordPress.

We strongly recommend to backup your website before editing any WordPress files.

This is the code snippet that will enable post duplication in WordPress:

/*
 * 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,
      '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 );

It is also important to note that this snippet only works for duplicating posts. You can duplicate WordPress pages by replacing the last line with this code to this one:

add_filter('page_row_actions', 'rd_duplicate_post_link', 10, 2);

All you need to do is paste the code to your functions.php file which is found in your hosting control panel. To do this, you can either use File Manager, FTP client (we prefer using FileZilla, or inbuilt WordPress file editor.

Using FTP client such as FileZilla, you can easily download the file for safekeeping before performing any changes to it that may break your site (by accident).

If you plan to use the third option, navigate to Appearance » Theme Editor, and select Theme Functions.

How To Clone Posts And Pages In WordPress Themes Function In WordPress
~WordPress Theme Functions file

Now, if you have successfully embedded the code above, you should see a Duplicate button in All Posts or All Pages menu.

How To Duplicate A Post Easily Using WordPress
~Click the 'Clone' button to duplicate a WordPress post

Conclusion

We hope this tutorial answers all your questions about how to duplicate a post or page in WordPress.

As a recap, there are many methods you can use to duplicate a WordPress page (or post). You can either use a WordPress plugin such as Duplicate post, Duplicate Page and Post or Post Duplicator.

You can also clone a WordPress page or post without a plugin. All you need to do is access the functions.php file in WordPress, then enter the code that we’ve provided.

Do you have any questions, tips, or tricks? Let us know in the comment section below!

Article written by Editorial Team

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Related Posts

crossmenu