How to Duplicate Pages in WordPress Using a Plugin and Manually
When using WordPress, you may need to duplicate a post or page for various reasons. Whether for quick content updates or maintaining a specific layout for new pages, knowing how to replicate content on multiple pages can streamline your workflow.
This tutorial will cover plugin-based approaches and manual techniques to efficiently create a new page or post based on existing content.
We will also go through several scenarios where this practice comes in handy and provide tips on how to duplicate a WordPress page to ensure a smooth process. Let’s get started.
Download All in One WordPress Cheat Sheet
How to Duplicate Pages or Posts Using a WordPress Plugin
Manually copying and pasting your WordPress page or post is possible. While the block editor offers a Copy all blocks feature, it falls short for duplicating pages and posts.
When you manually copy a post or page, only the text content is replicated. You must copy template parts, images, and SEO elements like meta descriptions and title tags separately. The process becomes time-consuming, especially when cloning multiple WordPress posts, pages, or custom post types.
You can avoid this issue by using a duplicate post plugin. This tool simplifies the duplication process and minimizes human errors.
Here’s how to duplicate a post in WordPress using Duplicate Page:
- Install and activate Duplicate Page from the WordPress plugin directory. Other ways to install the plugin include using an FTP client and uploading the plugin files manually through your admin dashboard.
- Go to Settings → Duplicate Page to configure the plugin’s settings. For this tutorial, we make it available in the classic editor and Gutenberg. The plugin assigns a Draft status to all duplicated content and redirects you to the post list after completing the process.
- Navigate to Posts → All Posts from your WordPress dashboard to find a Duplicate This button under each post. Click on it to create an exact replica of your chosen post as a new draft.
Duplicate Page is a freemium plugin, so consider upgrading to Pro to unlock its premium features. Buying the license for $15/website lets you limit access to the plugin based on user roles, change the duplicate page’s location, and set a default prefix and suffix to your duplicated page entries.
If Duplicate Page doesn’t fit your needs, consider other popular plugin options:
- Yoast Duplicate Post. Developed by the team behind the popular SEO plugin, Yoast Duplicate Post lets you clone multiple entries using the Bulk Actions feature.
- Post Duplicator. This plugin supports custom post types along with custom taxonomies and fields, making it ideal for WordPress sites of all sizes and niches.
- Duplicate PP. With this plugin, you can duplicate content from either the admin dashboard on the back end or the single post view on the front end.
- Duplicate Post. Besides cloning posts, this WordPress duplicate plugin identifies and removes copied content within a few clicks.
Pro Tip
Improve your content publishing workflow by understanding the proper way to add a new post in WordPress.
How to Duplicate Pages or Posts Manually
Beyond using plugins, you can activate a duplication link in your Pages and Posts sections by modifying the functions.php file. You can find this file in wp-includes, a core folder within your WordPress site.
Four tools are available for editing the functions.php file ‒ your web host’s File Manager, an FTP client like FileZilla, an HTML code editor, or the built-in WordPress editor.
The FTP client method involves creating an FTP account and connecting it to the server. We recommend setting up a FileZilla FTP connection as this popular FTP client is relatively easy to navigate.
Meanwhile, the built-in WordPress editor is accessible in Appearance → Theme File Editor from your WordPress dashboard.
If you’re familiar with coding, using an HTML editor may be the most convenient method. Most code editors include spell-checking and error detection features, ensuring your code is functional and clean.
Important! Back up your entire website before editing any WordPress files to avoid data loss.
For this tutorial, we will configure the functions.php file using Hostinger’s File Manager. First, open the file management tool by navigating to Files → File Manager from hPanel. Select Access Files of your-domain-name to specifically access the assets of your WordPress website.
Locate the functions.php file in public_html → wp-includes. Right-click on the file and select Edit, or double-click to modify it.
Paste the following code snippet at the bottom of your functions.php file:
/* * 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 );
Credit for coming up with this handy code: Misha Rudrastyh
The custom code above adds a duplication link in the Posts section. If the process is successful, the link should appear under each post. Click Duplicate to copy the entry as a new draft.
To add the Duplicate feature to your Pages section, you only need to replace the last line of the code above with the following snippet:
add_filter('page_row_actions', 'rd_duplicate_post_link', 10, 2);
Similarly, clicking the link lets you duplicate a WordPress page as a new draft.
Why Duplicate a Post or Page in WordPress
Here are several common reasons to duplicate a page in WordPress:
- A/B testing. Instead of recreating a new page from scratch, duplicating the original page lets you make subtle tweaks quickly.
- Streamlining the design process. When building a new site, duplicating saves you from repetitive page recreation. Using tools like the Yoast Duplicate Post plugin further simplifies the process.
- Optimizing page layout consistency. Duplicating an existing page ensures that the formatting, style, and layout remain cohesive. It’s particularly helpful when working with a custom page template, eliminating design disparities.
- Building a staging environment. While it’s not recommended for complete website testing and development, you can create a duplicated post or page to experiment with content as an alternative to creating a staging site.
- Creating multilingual content. If your site offers multilingual content, cloning pages provide a starting point for translation. You can retain the original design and structure while adapting the text to different languages.
While duplicating a page or post can be useful, having multiple identical pages on your site isn’t a good practice for WordPress SEO. When multiple URLs lead to the same content, search engines will choose the first one published as the canonical version and crawl the copies less often.
Consolidate duplicate URLs by assigning canonical tags to pages you want search engines to prioritize. Luckily, most SEO plugins offer features to set up canonical URLs.
Users whose websites run on Hostinger’s WordPress Business plan or higher can leverage the built-in staging tool. You can duplicate posts and pages for A/B testing and transfer the ones you want to keep to the live site, saving you time from consolidating duplicate content.
Conclusion
Whether you’re streamlining your design process or exploring innovative content creation, the ability to duplicate a WordPress page or post is invaluable.
In this article, we explored two ways on how to duplicate a page in WordPress:
- Using a WordPress duplicate post plugin. This method is beginner-friendly and suitable for replicating a large number of pages.
- Adding custom code to the functions.php file. Opt for this method if you can’t access your admin dashboard or want more freedom in customizing the duplicate post link.
We hope this article helped you understand how to duplicate WordPress pages efficiently and the different ways it can benefit your website-building workflow. If you still have questions, check out the FAQ section or post them in the comments section below.
Learn What Else You Can Do With WordPress
How to Install WordPress
How to Launch a WordPress Site
What Is a Permalink in WordPress
How to Create a Contact Form in WordPress
How to Edit Footer in WordPress
How to Update WordPress
How to Change WordPress Domain Name
How to Duplicate Pages in WordPress FAQ
This section covers the most frequently asked questions about how to duplicate a page in WordPress.
Can I Duplicate a Post or Page in WordPress?
Absolutely. You can manually copy page content, use a WordPress duplicate page plugin, or add custom code to the site’s functions.php file. Choose the method that suits your needs and technical expertise.
Why Should I Duplicate a Page or Post in WordPress?
Duplicating a WordPress page or post makes conducting A/B testing easier, streamlines the website-building process, and helps maintain consistent page layouts across the entire site. Duplicated content also serves as a starting point for translation and makeshift staging alternatives.
Does Duplicating a Page or Post in WordPress Create SEO Issues?
Replicating pages or posts can lead to SEO issues due to multiple identical URLs. Search engines favor the original page as canonical and crawl copies less. Set canonical tags using SEO plugins to prioritize specific pages. Alternatively, create a staging site for A/B tests and content transfers to avoid this issue altogether.
What Is the Difference Between Clone and Duplicate in WordPress?
In WordPress, a clone contains the exact copy of content, while a duplicate is a new entry with data taken from an existing page.
Comments
October 24 2017
Hmm but anyway you use code, it is same like plugin right? I found one got no database settings, seems also fast, can you recommend?? https://wordpress.org/plugins/duplicate-post-littlebizzy/
November 06 2017
Hi, good good tutorial. Is possibile create duplicated post into other database? I have two wordpress, with two different database . Fist wordpress is for staging, second is for production. This solution is very useful to create a new post in staging and create it in production env. Thanks.
March 16 2018
Works fine but only for post or page, i have done a simple plugin to create custom post...where ve i to change? Thx
March 23 2018
Hi Emanuele, What exactly do yo want to duplicate?
April 28 2018
Good tutorial for copy page because sometime it need to clone same layout from one page to another and it will very helpful for it and also able to copy page layout via making it duplicate thanks for informative article
September 09 2018
Thank you for the php code. Worked a treat!
October 17 2018
Thank you. Great piece of code. :)
July 03 2019
Thank You this code is great and I have been using it for quite some time. I would like to add one minor change since Gutenberg and advanced custom fields threw a wrench into it. Simply wrapping addslashes() around $post->post_content will fix any issues that occur.
September 24 2019
Hey Doug, Thanks for a great tip!
February 11 2019
Thank you so much for this! The code works like a charm! Nicely explained, great options for people who'd want to go the plugin way as well.
June 02 2019
Thanks for the great post. Has anyone written a script for cloning a hierarchy of pages? So it would clone all nested children in addition to the parent page?
September 03 2019
Hello Plugin WPBE - WordPress Posts Bulk Editor Professional has duplication functionality for all post types, and its possible duplicate not only for one time the same post but for many times
October 16 2019
Thank you. Great piece of code. ?
December 30 2019
Its really needed post and I found it on your site, I think you are very co operative to your customer. Thanks again.
January 29 2020
Hey Adrina, Happy to hear that it helped.
January 08 2020
Thanks for the great post. There's a lot of nice information. Also, I want to mention another nice plugin for duplicating posts/pages - https://wordpress.org/plugins/duplicate-page-or-post/
February 06 2020
Worked like a charm. I copied your code snippet into my child theme's functions, changed it to work for pages and wham! Thank you :)
February 17 2020
Hey man, your code is better than any duplicating plugins. Congratulations!
August 03 2020
Hi, Thank you so much. worked :)
August 04 2020
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.
August 18 2020
I'm far from being a geek. I'm in the IT since 1978... (70). Retired and UML2 teacher. I tried to include the snippet code into functions.php but it has apparently no effect. Could I mail to you 3 screen copies to find out what I missed ? Anyway many tks in advance. (Can you send me a mail address pls?)
November 06 2020
Hey there Alain! Of course you can email us the screen cap copies. Just login to your Hostinger account and you can reach our Customer Success team that works 24/7! :)
September 16 2020
Thanks for this! I tried putting this into my functions.php file, but the Duplicate link is not showing up on my posts as it is in your example. Do you know if this works with the latest WP versions?
November 18 2020
Hey Daniel. It should work with all the WP versions, yes. Make sure you put it within the frames of the functions.php, and you aren't out of the last closed bracket of the code. If you still struggle, just drop a line to our Customer Success team and we will help you out! :)
November 08 2020
Thanks for the code. Works flawless!
December 07 2020
Nice! It worked :) Now, I want to be able to duplicate both: pages and posts. What should I do? Thanks!
February 09 2021
Hi, Mila! If you use the second plugin (Duplicate Page and Post), that should allow you to duplicate both your pages and posts :)
January 31 2022
Thanks a lot!! I used the php snippet and it appears to work, but not with elementor. I am no longer able to edit any pages with elementor (including non-duplicated pages). Any idea if there is a fix or if it is some kind of paywall to encourage purchasing elementor pro?
February 04 2022
Hi Emma! It looks like Elementor has a special feature for page duplication, so I'd suggest to disable the PHP method and try out their way. Let us know how it goes for you!
May 11 2022
Hello guys, First thank you so much for the code, which is working perfectly. I wanted to know if there is a way to add the option [Duplicate Post/Page] in the dropdown of Edit Post, just like the plugin offers [in the admin toolbar] Thanks a lot once again.
May 12 2022
Hi! It would be possible, however, you'd need to manually alter the code, so if you're looking for the same functionality - installing a plugin is probably easier :)