Cómo duplicar una página de WordPress con un solo clic

Cómo duplicar una página de WordPress con un solo clic

En esta breve publicación, te mostraré cómo duplicar una página de WordPress con un solo clic. (También un post, portfolio o lo que sea).

El método no solo es realmente simple, sino que copiarás todos los metadatos que pueda tener tu publicación (campos personalizados, imagen destacada, etc.)

Cómo duplicar una página de WordPress: método con plugin: Método PRO (Code Snippet)

A continuación, solo copia el código aquí abajo y agregarás un enlace «Duplicado» dentro de tus enlaces rápidos. Ver la captura de pantalla.

Cómo duplicar una página de WordPress con un solo clic

Si haces clic en este enlace, entonces:

  • Crearás un duplicado de la publicación.
  • El estado de la publicación será como «Borrador»
  • Serás redirigido a la página de edición de publicaciones.

Entonces, para que funcione, solo usa este código aquí abajo.

// Duplica una página o post de WordPress con un Click

add_filter("post_row_actions", "wpsh_add_duplicate_link", 10, 2);
add_filter("page_row_actions", "wpsh_add_duplicate_link", 10, 2); // agrega el enlace a las paginas

function wpsh_duplicate_post_as_draft()
{
    if (!current_user_can("edit_posts")) {
        return;
    }
    if (
        !isset($_GET["duplicate_nonce"]) ||
        !wp_verify_nonce($_GET["duplicate_nonce"], basename(__FILE__))
    ) {
        return;
    }
    global $wpdb; 
    if (
        !(
            isset($_GET["post"]) ||
            isset($_POST["post"]) ||
            (isset($_REQUEST["action"]) &&
                "wpsh_duplicate_post_as_draft" == $_REQUEST["action"])
        )
    ) {
        wp_die("No post to duplicate has been supplied!");
    }
    // This on here gets the original post id and post all the original post data
    $post_id = isset($_GET["post"])
        ? absint($_GET["post"])
        : absint($_POST["post"]);
   		 $post = get_post($post_id);
  
  // En el caso de que no desees que el usuario actual sea el autor de la nueva publicación, cambia esta línea a esto:
    $new_post_author = $post->post_author;
    $current_user = wp_get_current_user();
    $new_post_author = $current_user->ID; 

    // Si existen datos de la publicacion, crea la publicacion duplicada

    if (isset($post) && $post != null) {

        $args = [
            "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,
        ];

        $new_post_id = wp_insert_post($args);

        // Conseguir todos los términos de publicación actuales y configúralos en el nuevo borrador de publicación

        $taxonomies = get_object_taxonomies($post->post_type); 
        foreach ($taxonomies as $taxonomy) {
            $post_terms = wp_get_object_terms($post_id, $taxonomy, [
                "fields" => "slugs",
            ]);
            wp_set_object_terms($new_post_id, $post_terms, $taxonomy, false);
        }

        // Duplicar todos los meta post
        
        $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);
        }

        // Redirigir a la pantalla de edición de publicación para el nuevo borrador
        wp_safe_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_wpsh_duplicate_post_as_draft",
    "wpsh_duplicate_post_as_draft"
);

// Agrega el enlace "Duplicate" a la lista de acciones para post_row_actions

function wpsh_add_duplicate_link($actions, $post)
{
    if (current_user_can("edit_posts")) {
        $actions["duplicate"] =
            '<a href="' .
            wp_nonce_url(
                "admin.php?action=wpsh_duplicate_post_as_draft&post=" . $post->ID,
                basename(__FILE__),
                "duplicate_nonce"
            ) .
            '" title="Duplicate this item" rel="permalink">Duplicate</a>';
    }
    return $actions;
}

Nota: Por supuesto, si te ves con capacidad, siempre puedes modificar el código a tu gusto.

Cómo duplicar una página de WordPress: método con plugin

Este método, por supuesto es el más sencillo y simple que te puedas imaginar, pues con un simple plugin puedes duplicar una página de WordPress.

Yoast Duplicate Post

Seguramente el más conocido y usado es Yoast Duplicate Post (Sí de la misma casa de Yoast).

Al instalarlo, tan solo tienes que dar al botón de ‘clone’ de cualquier página y listo, se habrá duplicado.

Cómo duplicar una página de WordPress con un solo clic 1

DUPLICATE POST

Ahora bien, quizás haya otros plugins que merezcan la pena probar aparte de Yoast Duplicate Post.

Uno de ellos es Duplicate Post, de Copy delete posts.

Esta opción tiene más funciones (demasiadas para mi gusto), como poder mandar cuantas veces puede duplicar un post o página.

Cómo duplicar una página de WordPress con un solo clic 2

Con este plugin podemos crear duplicados para páginas utilizadas en maquetadores de páginas con sus ajustes personalizados. Eso hace que facilite mucho la tarea de diseño.

Pero quizás la opción más interesante de este plugin es poder crear rápidamente una variación de una página o entrada para modificarla y compararla lado a lado (para ti, tus clientes o empresa).

En fin, que opciones hay muchas y toca que elijas la que mejor te convenga.

Cómo duplicar una página de WordPress con un solo clic 3

Mis herramientas favoritas de WordPress.

Gracias por leer este artículo. Espero que lo hayas encontrado útil a medida. Aquí hay algunas herramientas que utilizo como desarrollador y entusiasta de WordPress que espero que también te resulten útiles.

Estos son enlaces de afiliados, así que si decides usar alguno de ellos, ganaré una comisión y esto me ayudará a crear estos tutoriales y hacer videos de Youtube. Pero con toda honestidad, estas son las herramientas exactas que uso y recomiendo a todos, incluso a mis clientes, alumnos, amigos y familiares.

Hosting: Si deseas tener un alojamiento en la nube administrado realmente rápido y fácil de usar, profesional y con un soporte de lujo, te recomiendo LucusHost. (mira mi reseña aquí).

Desde este enlace podrás conseguir un 20% de descuento.

LMS: ¿Quieres montar tus propios cursos online en WordPress? Te sugiero Learndhash.

Orderable: Toma pedidos de restaurantes online. El plugin de WooCommerce diseñado para ayudarte a administrar tu restaurante.

Iconic: Impulsador de ventas para WooCommerce. Un conjunto de plugins para WooCommerce que potenciará tus ventas, como habilitar opciones de diseño personalizables para tus productos, agregar limites a cantidad de reservas y restricciones de tiempo a métodos de entrega específicos, swatches personalizados para atributos y un sinfín de opciones.

Membresía: Si quieres hacer una web de membresía, Memberdash es una de las opciones más flexibles.

Related Posts
1 Comment

[…] los usuarios pueden aprovecharse. Si quieres ver un ejemplo ahora mismo, tengo un post que explico cómo duplicar una página de WordPress con un solo click, que insertando un pequeño fragmento, ya tengo esa función (y sin necesidad de instalar ningún […]

Leave a Reply

Your email address will not be published.Required fields are marked *