Duplicar páginas y entradas en WordPress te optimizará el tiempo en recurrir a cambios y dañar una entrada o página publicada.
En ocasiones tendrás que escribir un post o una página muy parecida a la original y es tedioso estar copiando y pegando, ¿Te imaginas si fuera un contenido de cinco mil palabras?, terminarías perdiendo valioso tiempo hasta copiar todo el contenido.
En este post te enseñaré a cómo duplicar páginas y entradas en WordPress.
Duplicar Páginas y Entradas en WordPress con plugin
Yoast Duplicate Post es un plugin con el que lograrás duplicar entradas y páginas en WordPress con un solo clic, también te permite en «Ajustes» modificar si solo deseas en entradas o páginas y otorgar permisos en caso de que tengas editores.
Es uno de los más completos, te lo recomiendo porque se mantiene actualizado y tiene características premium de otros plugin.
Si no sabes como instalar un plugin manualmente te dejo esta guía ¿Cómo instalar un plugin manualmente?
¿Cómo funciona?
Una vez activado el plugin, en las entradas y páginas nos aparecerán las siguientes opciones:
- Clonar: Realiza una copia y te aparecerá en la primera hoja
- Nuevo borrador: Te redirige a la entrada para que empieces a modificar
- Reescribir y re-publicar: Te dirige al editor y al momento que le des clic en ‘publicar’, reemplazara al original
Ajustes del plugin
Qué Copiar
- Elementos de la página o entrada a copiar: Selecciona todos los elementos que se van a realizar en el duplicado.
- Prefijo del título: Si escribes el prefijo “Copia de”, se agregará al inicio del nombre del título de la entrada o página al duplicar.
- Sufijo del título: Si escribes “dupl.”, se agregará al final del nombre del título de la entrada o página al duplicar.
- Subir el orden del menú en: Añadir este número al orden del menú original (vacío o cero para mantener el valor)
- No copiar estos campos: Lista separada por comas de los campos meta que no deben copiarse.
- No copiar estas taxonomías: Clic si no deseas duplicar las categorías o etiquetas.
Permisos
- Perfiles a los que se permite hacer copias.- Si tienes más personas editando, les puedes otorgar permisos de duplicado desde aquí.
- Activar para estos tipos de contenido.- De igual forma selecciona si son solo posts que deseas que se dupliquen o también las páginas.
Visualización
- Mostrar estos enlaces: Desde aquí puedes eliminar cualquiera de estos enlaces que aparecen debajo de la entrada o página.
- Mostrar enlaces en: Si te parecen molestos estos enlaces en la «Barra de administración» los puedes quitar.
Duplicar páginas y entradas en WordPress sin Plugin
Debes agregar el siguiente código para duplicar páginas y entradas, lo puedes hacer de dos formas.
Importante: Realiza una copia de seguridad de tu sitio web.
Forma 1 – Desde functions.php
Escritorio de WordPress / Apariencia / Editor de temas / functions.php
Copias y pegas 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('page_row_actions', 'rd_duplicate_post_link', 10, 2);
Forma 2 – Code Snippets
Si ya lo tienes instalado, solo agregas el código en la sección Funciones (PHP) / Guardar los cambios y activar.
En cualquiera de las dos formas nos quedaría así:
Tiene menos opciones que el plugin, pero si te realiza el mismo procedimiento de duplicar páginas y entradas en WordPress.
Duplicar entradas en WordPress manualmente desde Gutenberg
Vas a la parte superior derecha, das clic en los 3 puntos verticales, seleccionas copiar el contenido y te diriges a una nueva entrada y pegar (control + v)
Espero esta guía te sea de utilidad e implementes en tu sitio, de esta forma ahorras tiempo en duplicar entradas y páginas en WordPress, por cierto, en caso de que utilices WooCommerce la opción de ‘Duplicar’ ya viene configurada. Debes dirigirte al producto y dar clic en duplicar, recuerda cambiar el link en el duplicado, ya que te saldrá al final del slug -copy.
¿Qué opinas sobre el tema? Déjame un comentario en este momento