How To Duplicate A Page In WordPress Without Plugin
In this article, I will show you How to duplicate a page in WordPress without using a plugin. Here I will cover 3 different ways to do that. You can either duplicate a page manually or using some code snippets or using a dedicated plugin.
Why do you need to duplicate a page in wordpress
Duplicating a page in WordPress can serve various purposes, and there are several scenarios where you might find this feature useful:
- Replicating Content: Save time by copying a page’s layout and structure for similar content.
- Consistent Design: Maintain a uniform look for specific page types.
- A/B Testing: Test different versions of a page for better engagement or conversions.
- Translations: Start with a duplicate for creating translated versions of a page.
- Long-Form Content: Keep a template while adding unique content.
- Event Pages: Quickly set up similar event pages with duplicated content.
- Archiving and Re-purposing: Preserve originals while repurposing content.
- Backup: Duplicate for a backup before making significant changes.
- Custom Landing Pages: Efficiently create tailored landing pages for campaigns.
- Development Testing: Duplicate pages for testing changes before going live.
Remember, while duplicating pages can be helpful, it’s important to ensure that the duplicated content is appropriately customized to suit its purpose. Duplicate content on your website, especially if it’s not modified significantly, can negatively impact search engine optimization (SEO) and user experience.
Duplicate a Page in WordPress Manually
If you want to duplicate a page in WordPress manually then all you have to do is edit the existing page or post and click on the three-dot menu in the top right-hand corner.
Now you will see an option like “Copy All Blocks”, Just click on it and all the contents of the page will be copied to your clipboard.
Now Go back and create a new page, set the title of the page, and paste the code (CTRL + V) copied to the clipboard.
Now all contents will be copied to your new page and you have successfully duplicated a page with just a few clicks.
Here, note that if you go through this method, only the contents of the page will be copied but the metadata like page title, meta description, featured image, category, and tags will not be copied. So, for this, you can use the 2nd method that i am going to share below.
Now, if you don’t want to use a plugin and want to add a duplicate button right after a post or page that will duplicate your post then you can use the below code.
Just paste the code in the function.php file or use a code manager plugin like WP Code, Code Snippets, etc.
/*
* 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!');
}
if ( !isset( $_GET['duplicate_nonce'] ) || !wp_verify_nonce( $_GET['duplicate_nonce'], basename( __FILE__ ) ) )
return;
$post_id = (isset($_GET['post']) ? absint( $_GET['post'] ) : absint( $_POST['post'] ) );
$post = get_post( $post_id );
$current_user = wp_get_current_user();
$new_post_author = $current_user->ID;
if (isset( $post ) && $post != null) {
$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
);
$new_post_id = wp_insert_post( $args );
$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);
}
$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);
}
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' );
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);
In this way, you don’t have to use a dedicated duplicate plugin for this and you can just use the code snippets only for that. Now you will see a Duplicate link as shown in the above screenshot without even using a dedicated duplicate plugin.
If you still want to use a plugin for more features then you can use any of the duplicate plugins for WordPress.
Conclusion
Now you have learned how to duplicate a page in WordPress without a plugin. If you have any doubts feel free to ask me in the comment section. I recommend you to use the search bar to find more tutorials like this. Also you can subscribe to our youtube channel for more tutorials like this.