Cómo duplicar una página en WordPress

jorge

Wordpress

Duplicar una página en WordPress puede ser increíblemente útil en varias situaciones: para darle un nuevo aire a tu diseño sin perder el contenido original, para realizar pruebas A/B, o simplemente para mantener una copia de seguridad rápida a mano. Aunque copiar y pegar el contenido puede ser una opción, esta no incluye aspectos importantes como la optimización SEO, plantillas de página, y otros metadatos. Por suerte, WordPress ofrece métodos eficientes para duplicar páginas y entradas con un solo clic, ya sea a través de plugins o código manual.

Lo que Necesitarás

Antes de comenzar, asegúrate de tener lo siguiente:

  • Acceso al panel de administración de WordPress.

Métodos para Duplicar una Página en WordPress

Método 1: Utilizando el Plugin Duplicate Post

El plugin Duplicate Post es una de las formas más sencillas para clonar tu página o entrada en WordPress. Además de crear un clon exacto, te permite agregar opciones de personalización como sufijos o prefijos a tus títulos.

  1. Instala y activa el plugin Duplicate Post.
  2. Navega a Páginas -> Todas las páginas.
  3. Pasa el cursor sobre la página que deseas clonar y verás dos opciones: Clonar y Nuevo borrador.
    • Clonar: Crea una copia exacta de la página.
    • Nuevo borrador: Abre la versión clonada en el editor de entradas.

Método 2: Utilizando el Plugin Duplicate Page and Post

Duplicate Page and Post facilita la clonación de páginas y entradas mientras conserva todo el contenido, estilo y metadatos.

  1. Instala y activa el plugin Duplicate Page and Post.
  2. Ve a Páginas -> Todas las páginas o Entradas -> Todas las entradas.
  3. Pasa el cursor sobre la entrada o página que deseas clonar y haz clic en Clone Me!.
  4. Edita la copia clonada y selecciona Publicar o Guardar borrador.

Método 3: Utilizando el Plugin Post Duplicator

Este plugin permite crear una réplica exacta de cualquier entrada o página, incluyendo campos y taxonomías personalizadas.

  1. Instala y activa el plugin Post Duplicator.
  2. Navega a Páginas -> Todas las páginas o Entradas -> Todas las entradas.
  3. Pasa el cursor sobre la página o entrada y haz clic en Duplicar entrada/Duplicar página.

Método 4: Sin Utilizar Plugins – A través del archivo functions.php

Si prefieres no usar plugins, puedes optar por añadir código al archivo functions.php de tu tema.

  1. Navega a Apariencia -> Editor de temas.
  2. Selecciona functions.php y pega el siguiente fragmento de código:
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!');
  }

  $post_id = (isset($_GET['post']) ? absint($_GET['post']) : absint($_POST['post']));
  $post = get_post($post_id);

  $current_user = wp_get_current_user();
  $new_post_author = $current_user->ID;

  if (isset($post) && $post != null) {
    $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,
    );

    $new_post_id = wp_insert_post($args);

    $taxonomies = get_object_taxonomies($post->post_type);
    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);
    }

    $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);
    }

    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');
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);

Para duplicar una página, reemplaza la última línea con:

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

Deja un comentario

JORGEHUDSON.COM

SEO Basado en resultados, sin secretos.

Redes