¡Bienvenido a una nueva guía más!
Seguro que ahora que estás creando tu página web has pensado: “¡Ojalá pudiera clonar esta página y ahorrarme tiempo!
¡Buenas noticias!
Hoy te enseñaré cómo duplicar una página en WordPress sin complicaciones. Te servirá tanto si usas Elementor como si prefieres hacerlo sin plugins.
¿Empezamos?
¿Por qué duplicar una página en WordPress?
Existen distintos motivos por los cuales puedas querer clonar una página o entrada de tu WordPress.
Te adelanto que esto es super útil:
- Reutilizar el diseño: Te has currado un diseño guay para una de tus secciones y quieres reutilizar casi todo. En vez de comenzar otra vez, duplicas la página y eliminar los elementos que no usarás.
- Cambios: Si necesitas realizar cambios en una de tus páginas, pero no te quieres arriesgar a fastidiarla con la página original, pues la duplicas, cambiar y listo. Ante todo, seguridad.
- Distintas versiones: Puede que estés trabajando en varias versiones de la misma página y quieras tener una visión de todas juntan. Vas duplicando y así tienes todas las opciones.
Lo mejor de todo es que te estoy contando, es que puedes hacerlo en pocos minutos.
Duplicar una página o entrada en WordPress con un plugin
Sí amigo o amiga, el mundo plugin en WordPress es casi infinito.
De las opciones que te voy a proponer, sinceramente esta es la más sencilla y rápida.
Instalas el plugin y a duplicar.
Te voy a recomendar uno para clonar páginas en WordPress pero, ten en cuenta, que existen muchos (luego te digo algunos).
Habitualmente Yoast Duplicate Post aunque como te digo hay muchos. Solo tienes que instalarlo y se activará una opción en los listados de páginas y entradas para poder clonar.
Aquí te dejo los pasos a seguir:
- Accede al escritorio de WordPress.
- Vete a Plugins > Añadir nuevo y buscas Yoast Duplicate Post.
- Los instalas y lo activas.

Cada vez que dupliques una página o entrada se te quedará en Borrador, para que no se publique y puedas realizar los cambios que necesites.
No ha sido muy difícil, ¿verdad?
Clonar una página o entrada en WordPress sin instalar un plugin
Esta opción, también te da la opción de duplicar una página o entrada en WordPress pero de forma menos directa.
Nos es más complicada, solo tienes que hacer un clic más:
- Accede al escritorio de WordPress.
- En el menú lateral seleccionas Entradas o Páginas, dependiendo de lo que vayas a duplicar.
- Haces clic sobre el título o en la opción Editar que aparece cuando dejar el ratón encima.
- En las opciones que te aparecen a la derecha, haces clic sobre Copy to a new draft y listo.

Como puedes ver, la diferencia es que el proceso es algo más lento.
Duplicar página en WordPress mediante código
Si te quieres ahorrar un plugin, pueden plantearte activar tú mismo una opción para clonar las páginas y entradas.
AVISO: Antes de hacer nada hazte una copia de seguridad que luego vienen los sustos.
- Accede al escritorio de WordPress.
- En el menú lateral seleccionas Apariencia > Editor de archivos de temas.
- En la barra lateral derecha seleccionas el archivo functions.php.
- Te vas a la última línea, dejas un espacio en blanco, copias el siguiente código y haces clic en el botón Actualizar archivo.
/*
* 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'] = 'Duplicate';
}
return $actions;
}
add_filter( 'post_row_actions', 'rd_duplicate_post_link', 10, 2 );
add_filter('page_row_actions', 'rd_duplicate_post_link', 10, 2);
Si toda ha ido bien, se te activará la opción de Duplicar tanto para las páginas como para las entradas.
Conclusión
Como ves no es difícil.
Ahora que ya sabes duplicar páginas y clonar entradas en WordPress puedes empezar a ahorrar tiempo.