Seguro que en alguna ocasión te has visto en la tesitura de querer clonar, copiar o duplicar una página o un post de tu WordPress y no tenías muy claro cómo hacerlo. Como siempre, hay varias formas de hacerlo y cada una tiene sus ventajas e inconvenientes.
Resumen:
Para empezar, podemos decidir si lo queremos hacer mediante un plugin o meternos de lleno en el código o también cabe la posibilidad de ir copiando poco a poco.
En este tutorial sobre cómo clonar o duplicar una página de cualquiera de estas formas de una manera sencilla y más o menos rápida. Además, lo haremos no sólo copiando el contenido, también respetaremos los estilos, las imágenes e incluso los datos SEO que ya tengamos para no perder nada del trabajo que ya tengamos hecho. En definitiva, podremos duplicar todas las páginas y post con sus datos asociados en WordPress.
Vamos a ello:
- Clonar o duplicar una página o post mediante plugins
- Clonar o duplicar una página o post manualmente, sin ayuda de plugins
Clonar o duplicar una página o post mediante Plugins
Posiblemente sea la forma más sencilla de duplicar páginas o post sin modificar el código directamente. Lo podrás hacer desde tu panel de control sin mucha dificultad.
Veamos cuatro de los plugin más recomendables:
-
Duplicate Post
Con este plugin podremos duplicar tanto el contenido de la página o post como los comentarios asociados. Nos da la opción de diferenciar cuál es el original y cuál la copia mediante un prefijo o sufijo.
Para hacerlo basta con seguir los pasos:
- Instalar y activar el plugin
- En tu menú de administración aparecerá un nuevo ítem dentro de Ajustes llamado Duplicate Post. Desde ahí podrás cambiar y personalizar las diferentes opciones que tienes
Una vez que esto esté configurado tal y como lo necesitas, si vas a las Entradas, por ejemplo, y muestras todas, en cada una de ellas verás que aparece una nueva opción “Clonar”
Y ya lo tienes, podrás duplicar todo lo que quieras y los elementos que tú hayas configurado para que se copien.
Podrás hacer este proceso de una en una o podrás, mediante, Acciones en lote, duplicar todas las que quieras a la vez, ahorrando tiempo.
-
Duplicate Page and Post
Este es un plugin muy ligero, lo que hará que no sobrecargues tu sitio WordPress y es sencillo de utilizar. Veamos:
- Como en el caso anterior, instalaremos y activaremos el plugin
- Aparecerá en los Ajustes de nuestro menú de administrador la opción Duplicate Post.
- Allí podemos configurar algunas opciones básicas
- Luego en cada página o post nos aparecerá la opción Duplicate
-
Duplicate Page
Con este plugin haremos básicamente lo mismo. También nos ofrece la opción de duplicar post personalizados y podemos guardar los duplicados en los diferentes estados (borradores, pendientes, publicados).
Su uso es sencillo:
- Instalamos y activamos el plugin
- Aparecerá en Ajustes del menú de administración como Duplicate Page
- Desde allí podemos configurarlo
- Por último, en cada post o página, aparecerá la opción
-
Post Duplicator
No añade demasiado peso a tu sitio WordPress y en cambio nos permitirá duplicar una página o varias, publicaciones, incluso las personalizadas, campos personalizados, categorías o taxonomías personalizadas, en resumen, todo lo que necesitemos duplicar.
EL modo de trabajar con este plugin es similar a los anteriores:
- instala y activa el plugin
- En este caso, en el menú de administración en Herramientas, aparecerá Post Duplicator
- Desde allí podemos configurar las diferentes opciones
- Ahora vamos a el post que queramos duplicar y vemos que aparece una nueva opción
Clonar o duplicar SIN Plugins
Pero no es necesario que utilices ningún plugin para clonar o duplicar tus publicaciones, también lo podemos hacer manualmente modificando el código de nuestro WordPress. Podemos hacerlo de dos formas diferentes: modificando el archivo functions.php o copiando y pegando el código de cada publicación que queramos duplicar.
Vamos paso a paso:
-
Modificando el functions.php
Ten en cuenta que editar y modificar este archivo no es algo que se deba hacer sin tomar alguna precaución. Lo primero que debes tener es una copia de tu sitio WordPress y siempre tener claro qué estas haciendo al modificar el archivo.
Debes editarlo y copiar el siguiente código:
/*
* 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 );
Este código nos permitirá duplicar los post, pero si lo que queremos es duplicar las páginas, bastará con que cambiemos la última línea por esta otra:
add_filter(‘page_row_actions’, ‘rd_duplicate_post_link’, 10, 2);
Después sólo debes guardar el archivo y subirlo al servidor si fuera necesario. Ahora la opción de duplicar debe aparecer cuando pases sobre la publicación que deseas clonar.
También debes tener en cuenta que si estás haciendo esta modificación en el functions.php del tema padre, cuando se actualice, perderás este código. Si quieres que este código sobreviva a las actualizaciones, deberías tener un tema hijo y hacer en el functions de éste la modificación. Así nunca lo perderás.
-
Copiar y pegar el código de la publicación
Si no estás muy familiarizado con el código php como desarrollador, tal vez te sea más sencillo esta otra opción, que puedes usar para duplicar una página o post de tu WordPress, para la cual no tendrás que editar ningún archivo php.
En este caso los pasos a seguir son los siguientes:
- Abre la publicación que quieres duplicar
- En la parte derecha encontrarás un menú, haz clic en Mas herramientas y Opciones
- Abre el Editor de Código
- Selecciona el código y cópialo
- Abre una nueva publicación y abre su editor de código (como hemos hecho antes)
- Pega el código ahí y vuelve al editor
- Ahora ya tienes la publicación duplicada
Ahora ya puedes clonar o duplicar todas tus publicaciones, pero si tienes cualquier problema o necesitas servicio técnico WordPress puedes ponerte en contacto con nosotros.