La duplicazione di una pagina o di un post in WordPress può significare molto più che copiare e incollare semplicemente il contenuto. È possibile mantenere il template di pagina, i dati SEO e le immagini, al fine di risparmiare tempo durante il restyling del sito web o l’aggiornamento dei contenuti.

Fortunatamente, duplicare pagine e post e tutti i loro dati associati su WordPress è semplice. Esistono diversi modi per eseguire il lavoro, sia con che senza un plugin.

In questo articolo, vedremo come clonare una pagina o un post in modo sicuro ed elencheremo alcuni plugin che possono aiutarci allo scopo.

Cominciamo subito!

Clona facilmente post e pagine WordPress con questi plugin

La clonazione di una pagina in WordPress è molto semplice quando si utilizza un plugin, poiché tutto viene eseguito direttamente nella dashboard. I plugin sono il modo più sicuro per duplicare un post o una pagina, poiché non modificherai direttamente il codice del tuo sito.

Se stai cercando lo strumento giusto, ecco quattro plugin che vale la pena provare.

1. Duplicate Post

Una delle opzioni scelte per la clonazione di pagine e post di WordPress è Duplicate Post . Questo plugin è facile da usare e clona tutto dal contenuto della pagina o dei post. Dispone anche un’opzione di prefisso e suffisso, per differenziare il tuo post originale dal clone.

Per duplicare un post con questo strumento, devi solo:

  1. Installare e attivare il plugin.
  2. Nella dashboard di WordPress, vai su Articoli > Tutti gli articoli per la clonazione dei post oppure su Pagine > Tutte le pagine dper la clonazione delle pagine.
  3. Passare alla pagina o al post che si desidera duplicare e fare clic su Clona per duplicarlo.
  4. È possibile selezionare più pagine o post ed è possibile clonarli tutti in una volta utilizzando Azioni in gruppo.

2. Duplicate Page and Post

Duplicate Page and Post non ha molte funzionalità, ma compensa con la velocità. Questo plugin leggero è uno dei modi più veloci per clonare un post o una pagina in WordPress e non appesantirà il tuo sito con funzioni superflue..

Per clonare una pagina o pubblicare un post con questo plugin, attenersi alla seguente procedura:

  1. Installa e attiva il plugin.
  2. Vai a Articoli > Tutti gli articoli o Pagine > Tutte le pagine , a seconda di ciò che vuoi duplicare.
  3. Passa il mouse sopra la pagina o il post che desideri clonare.
  4. Fai clic sull’opzione Duplica .

3. Duplicate Page

Duplicate Page offre alcune funzionalità aggiuntive che alcuni altri plugin di clonazione non forniscono. Questo plugin duplicherà post, pagine e custom post type. Inoltre, è possibile salvare le copie risultanti come bozze, in sospeso, pubbliche o private.

Per utilizzare duplicate page, devi solo:

  1. Installare e attiva il plugin.
  2. Configurare le impostazioni per soddisfare le tue esigenze.
  3. Andare su Pagine > Tutte le pagine o Articoli > Tutti gli articoli per trovare il contenuto che vuoi duplicare.
  4. Fare clic sull’opzione Duplica .

4. Post Duplicator

Un altro semplice plugin di clonazione è Post Duplicator . Questa soluzione crea un duplicato esatto di qualsiasi post o pagina, inclusi custom post type , campi personalizzati e tassonomie personalizzate. È rapido e facile da usare e non dovrebbe aggiungere peso superfluo al tuo sito.

Per duplicare i contenuti con questo strumento, attenersi alla seguente procedura:

  1. Installa il plugin e attivalo.
  2. Passare a Articoli > Tutti gli articoli o Pagine > Tutte le pagine per trovare il contenuto che desideri clonare.
  3. Passa il mouse sopra il post o la pagina.
  4. Fai clic sull’opzione Duplica pagina o Duplica post .

Come clonare una pagina su WordPress senza plugin

Naturalmente, non è necessario utilizzare un plugin per clonare una pagina o post in WordPress. Questo può essere fatto anche manualmente, modificando il file funtions.php o copiando e incollando il relativo codice.

Diamo un’occhiata a come funzionano entrambi i metodi.

1. Abilita la clonazione tramite codice via funtions.php

Uno dei modi manuali per clonare una pagina o post di WordPress è quello di modificare il codice nel tuo functions.php file. Anche se può essere facile da fare, devi essere molto cauto e fare prima un backup del tuo sito web. 

Per abilitare la clonazione dei post, è necessario accedere al functions.php file e aprirlo per la modifica, utilizzando un File Transfer Protocol (FTP) o qualsiasi altro metodo. Quindi dovrai aggiungere il seguente snippet di codice alla fine del file:

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

Per abilitare la clonazione anche per le pagine, usa lo stesso codice ma sostituisci la riga finale con:

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

Successivamente, è possibile salvare il file e ricaricarlo sul server. Quindi puoi tornare alla dashboard di WordPress. Un pulsante Duplica ora dovrebbe apparire quando passi il mouse sopra una pagina o un post che desideri clonare.

2. Copia e incolla manualmente il codice per duplicare una pagina

Se non vuoi modificare il file  functions.php , è possibile copiare e incollare manualmente il codice per la pagina o post che si desidera clonare. Per fare ciò, dovrai:

  1. Aprire la pagina o il post che vuoi duplicare.
  2. Fare clic sul menu Altri strumenti e opzioni .
  3. Selezionare Editor di codice .
  4. Copiare il codice per la pagina o il post.
  5. Fare clic su Nuovo post o Nuova pagina.
  6. Nel nuovo post o pagina, aprire l’ Editor di codice.
  7. Incollare il codice.
  8. Fare clic sul menu Altri strumenti e opzioni .
  9. Selezionare Visual Editor .
  10. La nuova pagina o post dovrebbe ora essere un clone di quello vecchio.

Questo processo può richiedere un pò di tempo e dovrai farlo individualmente per ogni pagina o post che desideri clonare. Ecco perché ti consigliamo di utilizzare un plugin se stai cercando di duplicare molti contenuti.

Buon lavoro!