How To Duplicate WordPress Post?

Making a copy of your current WordPress posts or pages can be valuable as a rule. You can utilize the duplicate as a format for future posts, or a reference when you upgrade your site. Fortunately, there are numerous approaches to clone a page or post in WordPress. This instructional exercise will clarify those various strategies, so hold on and continue perusing!

Clone WordPress Page or Post with WordPress Plugin

The most straightforward approach to make a duplicate of a page or post is by utilizing a module. Upon enactment, cloning posts and pages is just a tick away! Investigate our determination of the best WordPress plugins to copy your posts and pages just as how to utilize them:

Duplicate Page And Post

How to Clone/Duplicate WordPress Post or Page Free 2020
WordPress Duplicate Page/Post Plugin

Duplicate Page and Post enables you to clone WordPress post and page quickly. The plugin can duplicate a page or post without changing its content, title, or style.

Clone WordPress Post And Pages Easily
Duplicate WordPress Post
Clone WordPress Post And Pages Easily

Using this plugin is relatively easy. You just need to follow these steps To Duplicate WordPress Post:

  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.
How to Clone/Duplicate WordPress Post or Page Free 2020
Clone WordPress Post And Pages
  • 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.

Duplicating WordPress Post or Page Without Plugins

Besides using plugins, you can also tweak some codes to duplicate WordPress pages and posts. While this method sounds like a bother, it is actually quite simple.

The code snippet below will enable post duplication in WordPress:

/*
 * Function for post duplication. Dups appear as drafts. User is redirected to the edit screen
Vist - https://www.Wpstarter.tech
 */
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 );

This snippet only works for duplicating posts. You can duplicate WordPress pages by replacing the last line with this code:

/*
Visit Our Site - https://www.wpstarter.tech
For More WordPress Tutorials
*/
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. To do this, you can either use File Manager, FTP client, or inbuilt WordPress file editor.If you plan to use the third option, navigate to Appearance -> Theme Editor, and select Theme Functions.

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

Conclusion

We hope this tutorial answers all your questions about how to duplicate a post or page in WordPress. To refresh our minds, let’s have a quick recap.

First, you can duplicate a page or post using a WordPress plugin. – Duplicate Page and Post.

Second, you can do it 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!