Duplicar una página en WordPress puede ahorrarte tiempo y esfuerzo en la creación de contenidos similares. En este artículo, te mostraremos cómo duplicar páginas en WordPress de forma sencilla, ya sea con o sin el uso de plugins. Además, te enseñaremos cómo clonar una entrada en WordPress y cómo clonar una página con Divi.
Plugins para duplicar páginas y entradas
Si prefieres utilizar plugins para duplicar páginas y entradas en WordPress, aquí te presentamos algunas opciones:
Duplicar páginas y entradas en WordPress es un proceso sencillo que te permitirá ahorrar tiempo y esfuerzo al crear contenidos similares. Ya sea que decidas hacerlo de manera manual o utilizando plugins, es importante que sigas las instrucciones cuidadosamente para evitar errores y duplicar de manera efectiva tu contenido en WordPress.
¿Como duplicar una página en WordPress sin plugin?
Para agregar un botón «duplicar» al listado de entradas y páginas en WordPress y que permita duplicar toda la página, puedes seguir los siguientes pasos:
1. Añadir una opción o botón nuevo al listado de entradas y páginas:
En primer lugar, es necesario añadir un nuevo botón en el listado de entradas y páginas. Para ello, podemos utilizar el filtro «post_row_actions» y «page_row_actions», que nos permite añadir acciones personalizadas al listado de entradas y páginas, respectivamente.
Para añadir el botón «duplicar», podemos utilizar el siguiente código en el archivo functions.php de nuestro tema:
// Añadir botón "Duplicar" en listado de páginas
function add_duplicate_button($actions, $post) {
$actions['duplicate'] = '<a href="' . wp_nonce_url(admin_url('admin.php?action=duplicate_page&post=' . $post->ID), basename(__FILE__), 'duplicate_nonce') . '">Duplicar</a>';
return $actions;
}
add_filter('page_row_actions', 'add_duplicate_button', 10, 2);
2. Recopilar toda la información del post o página a duplicar y crear el borrador con esos datos:
Para duplicar la página, necesitamos recopilar toda la información del post o página a duplicar. Podemos utilizar la función «get_post» para obtener los datos del post o página original:
// Obtener los datos de la página a duplicar
$page_to_duplicate = get_post($post_id);
// Obtener los datos del post a duplicar
$post_to_duplicate = get_post($post_id);
Una vez obtenidos los datos del post o página original, podemos crear una copia utilizando la función «wp_insert_post». Esta función nos permite crear un nuevo post con los datos que hemos obtenido previamente:
// Crear la copia de la página
$duplicated_page = array(
'post_title' => $page_to_duplicate->post_title . ' (Copia)',
'post_content' => $page_to_duplicate->post_content,
'post_status' => 'draft',
'post_author' => $page_to_duplicate->post_author,
'post_type' => $page_to_duplicate->post_type
);
$new_page_id = wp_insert_post($duplicated_page);
3. Comprobar si el usuario ha pulsado en el botón de «Duplicar» y, si es así, ejecutar la función que crea el borrador:
Para comprobar si el usuario ha pulsado en el botón «duplicar», necesitamos utilizar una variable GET llamada «action» y un nonce para verificar que la solicitud proviene del propio sitio.
// Verificar que la solicitud proviene del propio sitio
if ( ! isset($_GET['duplicate_nonce']) || ! wp_verify_nonce($_GET['duplicate_nonce'], basename(__FILE__)) ) {
return;
}
4. Una vez verificado que la solicitud proviene del propio sitio, podemos ejecutar la función que crea el borrador de la página.
Para ello, podemos utilizar el siguiente código:
// Duplicar página
if (isset($_GET['action']) && $_GET['action'] == 'duplicate_page') {
$post_id = absint($_GET['post']);
// Obtener los datos de la página a duplicar
$page_to_duplicate = get_post($post_id);
// Crear la copia de la página
$duplicated_page = array(
'post_title' => $page_to_duplicate->post_title . ' (Copia)',
'post_content' => $page_to_duplicate->post_content,
'post_status' => 'draft',
'post_author' => $page_to_duplicate->post_author,
'post_type' => $page_to_duplicate->post_type,
'post_date' => $page_to_duplicate->post_date,
'post_date_gmt' => $page_to_duplicate->post_date_gmt
);
$new_page_id = wp_insert_post($duplicated_page);
// Asignar URL única
$new_page_slug = wp_unique_post_slug(sanitize_title($page_to_duplicate->post_title) . '-2', $new_page_id, 'draft', $page_to_duplicate->post_parent);
wp_update_post(array(
'ID' => $new_page_id,
'post_name' => $new_page_slug
));
// Asignar imagen destacada
$thumbnail_id = get_post_thumbnail_id($post_id);
if (!empty($thumbnail_id)) {
set_post_thumbnail($new_page_id, $thumbnail_id);
}
// Redirigir al editor de la nueva página
wp_redirect(admin_url('post.php?action=edit&post=' . $new_page_id));
exit;
}
Este código comprueba si la variable GET «action» es igual a «duplicate_page» y, en ese caso, ejecuta la función que crea la copia de la página.
Una vez creada la copia de la página, redirige al usuario al editor de la nueva página.
En resumen, para agregar un botón «duplicar» al listado de entradas y páginas en WordPress y que permita duplicar toda la página, es necesario añadir un nuevo botón al listado, recopilar toda la información del post o página a duplicar y crear el borrador con esos datos, y comprobar si el usuario ha pulsado en el botón de «duplicar» y, si es así, ejecutar la función que crea el borrador. Con estos pasos, podremos añadir la opción de duplicar páginas de forma rápida y sencilla.