Cómo duplicar una página en WordPress

Cómo duplicar una página en WordPress

Seguro que en más de una ocasión te habrás visto en la necesidad de copiar o duplicar una página de tu gestor de contenidos WordPress y te has preguntado cómo hacerlo sin afectar a las páginas que ya están publicadas.

Si no es así, a continuación mencionamos situaciones en las que suele ser necesario llevar a cabo una copia de una página existente en nuestra web.

¿Por qué realizar una copia de una página o entrada en mi web?

Modificar el diseño: quieres hacer modificaciones que afectan al diseño y estructura del contenido de la página o entrada, y no quieres que esto afecte al modo en que se visualiza actualmente la web. Realiza una copia y trabaja en modo borrador hasta que termines las modificaciones.

Modificación de textos: puede que no necesites modificar el diseño de la página, pero quieres actualizar su contenido (textos e imágenes) sin afectar a la página que está visible. Como en el caso anterior, puedes crearte un duplicado, trabajar en modo borrador y publicar los cambios una vez consideres que las modificaciones están listas.

Modificación temporal: puede que quieras mostrar un mensaje temporal para realizar una promoción o llevar a cabo una acción publicitaria concreta y recuperar el diseño actual una vez finalice el periodo de vigencia de esa acción. Haz una copia de la versión actual de la página, guárdala a modo de copia de seguridad y publícala de nuevo una vez finalice la promoción.

A continuación te explicamos las distintas formas que nos ofrece WordPress para realizar una copia de una página existente y poder trabajar en ella sin que tenga consecuencias en nuestro sitio web. ¡Vamos a ello!

Duplicar páginas y entradas en WordPress usando plugins

El uso de plugins nunca es plato de buen gusto, no obstante, si no tenemos un perfil técnico que nos permita editar código, sin duda es una opción más que razonable para incorporar esta funcionalidad en nuestro gestor de contenidos WordPress.

Antes de explicarte las opciones que tenemos a nuestro alcance, te explicamos brevemente cómo buscar los plugins para instalarlos en nuestra web.

¿Dónde buscar los plugins para duplicar mis páginas y entradas?

Como en todas las grandes plataformas web que nos ofrecen la posibilidad de llevar a cabo desarrollos web, WordPress cuenta con su propio repositorio de extensiones, en el que podremos encontrar todo tipo de funcionalidades añadidas.

Buscador de plugins del repositorio WordPress

Para ello no tenemos más que acceder al repositorio oficial de plugins WordPress, introducir lo que queremos buscar en el buscador y nos ofrecerá como resultado los distintos plugins que se han desarrollado para realizar copias de las páginas de nuestro sitio web.

Resultado de la búsqueda de plugins para duplicar páginas
Ejemplo de resultado de búsqueda en el repositorio de WordPress

Como verás, al realizar la búsqueda, existen multitud de plugins desarrollados para duplicar nuestro contenido. A continuación mencionamos algunos de los que mejor funcionan.

Plugin Duplicate post

Plugin duplicate post para duplicar entradas de WordPress

Sin duda una de las opciones más conocidas para duplicar páginas o entradas en nuestro sitio web.

De fácil uso, no tienes más que instalar, activarlo y configurar cómo quieres que se dupliquen los contenidos de las páginas o entradas de tu web.

Te dejamos el enlace al videotutorial de los desarrolladores en el que se explica de forma muy sencilla: https://youtu.be/1KXLuKhNCR4

Plugin Yoast Duplicate Post

De la mano de los desarrolladores del popular plugin Yoast SEO, hace tiempo tenemos disponible este plugin que nos ofrece también la posibilidad de clonar nuestros post y páginas de WordPress.

Como en el caso anterior, no tenemos más que realizar la búsqueda del plugin en el buscador del repositorio oficial de WordPress, descargarlo, instalarlo y activarlo.

Plugin Yoast Duplicate Post para clonar entradas de WordPress

Como alternativa al sitio web oficial, también podemos realizar la búsqueda de los plugins a través del buscador integrado en el panel de administración de WordPress.

Desde la página de plugins, pulsamos sobre el botón «Añadir nuevo» que se encuentra en la parte superior, y escribimos en el buscador el nombre del plugin o funcionalidad que necesitamos.

Resultado buscador de plugins WordPress para duplicar artículos del blog

De manera automática se mostrarán los resultados que nos ofrece el repositorio de WordPress y desde esa interfaz podremos instalar el plugin que seleccionemos.

Como último paso, tras activar el plugin Duplicate Post de Yoast, iremos al listado de páginas o entradas y veremos como junto a las opciones que nos ofrece WordPress por defecto, ahora aparecerá una nueva opción «Clonar».

Listado de páginas WordPress

Pinchando en esa opción, crearás una copia de la página de origen para poder trabajar sobre ella sin afectar al diseño y contenido de la página original.

Duplicar una entrada o página en WordPress sin usar plugins

Si tienes conocimientos o te atreves a meterle mano al código de WordPress (nosotros te animamos a hacerlo siempre y cuando tengas una copia de seguridad por si las moscas), para incorporar a tu sitio web la funcionalidad de copiar una página o entrada sin necesidad de instalar ningún plugin, puedes insertar este código en el archivo functions.php de tu tema o plantilla:

/*
 * 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 );

El código anterior te servirá para incluir la funcionalidad en el listado de entradas de WordPress. Para incorporar esta funcionalidad al listado de páginas, lo que haremos será sustituir la última línea del código anterior por la siguiente:

add_filter('page_row_actions', 'rd_duplicate_post_link', 10, 2);

Como ves, hay distintas opciones de incluir en nuestra página web la funcionalidad para poder clonar o duplicar nuestros contenidos. Ahora solo te queda elegir cuál de ellas se adapta más a tus necesidades.

Espero que el artículo te haya sido de ayuda. Te leo en los comentarios para saber si conoces otras opciones para llevar a cabo la copia de páginas y entradas o si has tenido algún problema al intentar implementar esta solución.

Instalar código Google Tag Manager en WordPress
como actualizar wordpress
Dejar una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Puedes usar estas etiquetas y atributos HTML:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>