Are you in love with a certain WordPress page of yours, and want to duplicate it? Or, do you want to work on a WordPress page without affecting its existing version? Either way – this article is for you.
It is pretty easy to duplicate a page in WordPress, and in this post, we will walk you through various options through which you can do so.
There could be various reasons why you might want to duplicate a page or post in WordPress:
Whatever it is, we will help you in duplicating a WordPress page on the go.
Access to the WordPress admin panel and a few minutes
You can easily clone or duplicate a page using appropriate plugins. Let’s have a look at each of these plugins.
Don’t take this plugin by its name – in addition to duplicating a page, this plugin can also help you duplicate a post. All you need to do is install the Duplicate Page plugin.
Once installed, a new option would be added beneath each page in WordPress that says Duplicate This. Next, simply select the option and your page (or post) would be cloned within a single click.
This is another plugin which can help you in duplicating a post or page, as the need might be. The plugin not only clones a page, but can also help you in cloning multiple pages at a time.
This plugin comes in handy when you need to duplicate an entire website. So, if you have a fashion website and want to launch an exact same website for a different purpose, you don’t have to start it from scratch and instead you can use this plugin to duplicate your website on the go.
This plugin is no different and helps you in cloning your page and post on the go. All you need to do is install the plugin and hover over the respective page or post which needs to be cloned and select Clone. This would create the copy and the duplicate page or post would automatically be created as a draft.
If your website theme supports Visual Composer, you can also make use of Visual Composer to duplicate a WordPress page.
All you need to do is:
In addition to making use of plugins, you can also clone your WordPress page by using your programming skills. If you are not a techie, below is a code snippet which would help:
* * 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( page_row_actions', 'rd_duplicate_post_link', 10, 2 );
Isn’t this super easy? Well, it is not just easy but also saves your time which you would have otherwise invested in designing a page from scratch.
We hope this tutorial would have helped you understand how to duplicate a page in WordPress. So, which one is your preferred method? Do let us know in the comments below.
Write a comment