Stai cercando un metodo rapido per duplicare una pagina o un post di WordPress? In questa guida ti mostrerò tre diversi sistemi per creare facilmente una copia di pagine e articoli.
Partiremo da un metodo manuale, che è però limitato perché non ci permette di duplicare tutto il contenuto. Per poter effettuare una copia completa vedremo altri due metodi: sia come fare utilizzando un plugin che come creare una funzione personalizzata che aggiunge una funzione di duplicazione.
Iniziamo!
Table of Contents
Come duplicare pagine o post di WordPress
Come avrai sicuramente notato, WordPress non ha una funzione nativa che ci permette di duplicare con un click pagine e post.
Per ovviare a questa mancanza possiamo seguire tre metodi.
Il più semplice è quello di duplicare manualmente la pagina o il post che ci interessa. Questo sistema è utile quando abbiamo poche pagine o post da copiare, ma se abbiamo invece bisogno di ripetere questa operazione più volte, è meglio usare un metodo più automatizzato.
Il secondo metodo che vedremo è quello di utilizzare un plugin che aggiunge la funzione duplica e ci permette di creare una copia in un click di pagine e articoli.
Per finire, vedremo un altro sistema che ci permette di evitare di utilizzare un plugin andando a usare una funzione personalizzata.
Queste soluzioni sono tutte e tre valide quando vuoi creare una copia di pagine o articoli nello stesso sito, puoi scegliere quindi quella che si risponde meglio alle tue esigenze.
Se, invece, vuoi duplicare pagine o post su un altro sito WordPress, hai bisogno di fare una vera e propria esportazione. Puoi seguire la nostra guida su come esportare gli articoli di WordPress in modo da trasferire non solo il contenuto degli articoli, ma anche i media allegati e l’immagine in evidenza.
Puoi anche seguire la versione video in cui mostriamo come:
- duplicare pagine e post manualmente;
- usare il plugin Duplicate Page;
- inserire un codice personalizzato per creare una funzione di duplicazione.
Adesso andiamo a vedere nel dettaglio le tre soluzioni di cui abbiamo appena parlato. Nei capitoli successivi vedremo come:
- duplicare pagine e post manualmente;
- usare i plugin Duplicate Page e Yoast Duplicate Post (quest’ultimo ci permette anche di fare copie in blocco di più pagine o articoli);
- usare una funzione personalizzata.
Duplicare pagina o post di WordPress manualmente
Il metodo manuale è il più semplice e, come anticipavamo, è quello più adatto quando bisogna sfruttare la duplicazione raramente.
Facciamo un esempio con una pagina, ma tieni conto che il metodo da seguire è lo stesso anche per gli articoli e per i custom post type di WordPress.
Suggerimento: questo metodo ci consente di duplicare il contenuto di una pagina, ma eventuali dati aggiuntivi come custom field creati con Advanced Custom Fields o altri metodi, non verranno copiati e dovranno essere inseriti a mano. I metodi che vedremo dopo, invece, ci consentono di duplicare pagine e post con tutti i loro contenuti, anche eventuali campi personalizzati.
Copiare il contenuto della pagina
Dalla bacheca di WordPress andiamo su Pagine > Tutte le pagine e modifichiamo la pagina che vogliamo duplicare.
Una volta all’interno di Gutenberg dobbiamo:
- selezionare tutti i blocchi (CTRL + A);
- copiare tutta la selezione (CTRL + C).
Quindi è sufficiente usare la combinazione di tasti Ctrl + A (o Command + A nel caso in cui tu stia utilizzando macOS) per selezionare tutti i blocchi. Nel pannello Blocco a destra vedrai il numero di blocchi selezionati, se risulta un solo blocco dovrai usare di nuovo la combinazione di tasti Ctrl + A per selezionarli tutti.
In alternativa puoi cliccare su Opzioni (⋮) > Copia tutti i blocchi.
Incollare il contenuto in una nuova pagina
A questo punto possiamo creare una nuova pagina e incollare il contenuto. Tieni presente che il titolo non viene copiato in automatico, dovrai quindi reinserirlo.
Usare un plugin per duplicare pagine e articoli
Passiamo quindi al secondo metodo che ci permette di duplicare con un click pagine e articoli sul nostro sito WordPress.
Utilizzando un plugin abbiamo diversi vantaggi rispetto al metodo precedente:
- i plugin di questo tipo ci permettono di fare una copia con un click senza dover fare copia e incolla manualmente;
- tutti i campi personalizzati vengono mantenuti nella nuova pagina creata.
Come usare Duplicate Page per duplicare pagine e articoli
Per duplicare pagine, articoli e custom post possiamo usare il plugin Duplicate Page.
Per prima cosa dovrai installare il plugin: vai su Plugin > Aggiungi nuovo, cerca “duplicate page” e clicca su “Installa ora“.
Dopodiché attivalo cliccando su “Attiva“.
Adesso, se andiamo alla lista di tutte le pagine o tutti gli articoli, vedremo che il plugin ha creato un nuovo link nella lista delle azioni, cliccando su “Duplica”, il plugin creerà una copia di quella pagina come bozza.
Quando creiamo una copia della nostra pagina o del nostro articolo utilizzando questo plugin, il contenuto viene duplicato completamente. Questo significa che la copia includerà:
- campi personalizzati che abbiamo creato ad esempio con ACF;
- impostazioni di plugin come Rank Math (parola chiave, slug, titolo, metadescrizione, ecc).
Modificare le impostazioni di Duplicate Page
Andando su Impostazioni > Duplica pagina possiamo modificare le impostazioni del plugin Duplicate Page.
Da qui possiamo:
- selezionare l’editor (classico, Gutenberg, tutti gli editor);
- scegliere lo stato del nuovo articolo o pagina: di default viene creato come Bozza, ma potremmo volerlo impostare come “in attesa di revisione”;
- reindirizzare dopo il click su duplica: scegliendo schermata di modifica duplicato, cliccando su Duplica saremo rimandati all’editor della pagina o dell’articolo appena duplicato;
- suffisso: possiamo inserire un suffisso al titolo per distinguere il duplicato dal contenuto originale.
Come usare Yoast Duplicate Post per duplicare pagine e articoli
Un altro plugin che possiamo usare per duplicare rapidamente pagine e articoli è Yoast Duplicate Post, creato dagli stessi sviluppatori del famoso plugin Yoast SEO.
Questo plugin, a differenza di quello che abbiamo visto prima, ci permette anche di selezionare più pagine o articoli da duplicare in un solo click.
Andiamo su Plugin > Aggiungi nuovo, cerchiamo il plugin “yoast duplicate post” e clicchiamo su “Installa ora“.
Dopodiché possiamo attivarlo cliccando sul pulsante “Attiva“.
Se andiamo alla lista delle pagine o degli articoli, vedremo che il plugin ha aggiunto dei nuovi link: clona, nuova bozza e riscrivi e ripubblica.
Clona: crea una copia della pagina o dell’articolo, ma non apre l’editor. La copia viene creata come bozza.
Nuova bozza: crea una copia (come bozza) e apre l’editor.
Riscrivi e ripubblica: crea una copia della pagina già pubblicata e ci permette di sovrascrivere il contenuto esistente cliccando sul pulsante “Republish” dall’editor.
Come anticipavo prima, questo plugin ci permette anche di clonare più pagine contemporaneamente. Ci basta selezionarle dalla lista di tutte le pagine e poi dalle Azioni di gruppo scegliere “Clona” o “Riscrivi e ripubblica” in base alle nostre esigenze.
Suggerimento: anche in questo caso, come per il plugin che abbiamo visto prima, quando cloniamo un articolo o una pagina verranno mantenuti tutti i custom field e eventuali altri dati come le impostazioni dei plugin per la SEO.
Impostazioni del plugin Yoast Duplicate Post
Cliccando su Impostazioni > Duplicate Post, tramite la scheda “Cosa copiare” possiamo modificare le preferenze del plugin in modo da decidere quali elementi mantenere e quali no.
Elementi da copiare dell’articolo/pagina: possiamo scegliere quali elementi mantenere nella copia.
Prefisso del titolo: possiamo aggiungere il prefisso al titolo per la nuova copia che creiamo. Il prefisso verrà aggiunto prima del titolo originale, per esempio se la pagina si chiamava “Contattaci” e aggiungiamo come prefisso “Copia”, il titolo della pagina duplicata sarà “Copia Contattaci”.
Suffisso del titolo: stessa cosa di prima, ma in questo caso viene aggiunto dopo il titolo del contenuto originale.
Non copiare questi campi: possiamo inserire campi personalizzati che non vogliamo copiare, ogni campo dovrà essere separato dall’altro con una virgola.
Non copiare queste tassonomie: possiamo scegliere se copiare o no categorie e tag.
Dalla scheda “Permessi” possiamo impostare quali ruoli utente avranno accesso alle funzioni del plugin. Per impostazione predefinita solo amministratori ed editor possono duplicare articoli e pagine.
Inoltre da questa sezione possiamo scegliere per quali tipi di articolo rendere disponibili le funzioni di duplicazione.
Duplicare pagine e post senza usare un plugin
Se non vogliamo usare un plugin, possiamo aggiungere uno snippet di codice per creare una nostra funzione di duplicazione personalizzata.
Il metodo più semplice è inserire questo snippet usando un plugin che si chiama Code Snippets. Questo plugin ci permette di aggiungere snippet di codice senza dover andare a modificare il file functions.php del tema e dover quindi creare un tema child.
Inoltre con questo metodo potremo poi attivare o disattivare il codice aggiunto con un semplice click.
Per prima cosa quindi installiamo e attiviamo il plugin Code Snippets sul nostro sito WordPress.
Dopodiché clicchiamo su Snippets > Add New:
- nel titolo inseriamo “Duplicare pagine e articoli”;
- nel campo “Functions PHP” inseriamo il codice;
- clicchiamo sul pulsante “Activate” per attivare la funzione.
Se non vuoi scrivere la funzione a mano, puoi semplicemente personalizzare lo snippet che trovi su GitHub e che riporto qui:
<?php
/*
* 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.'-new',
'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 );
add_filter('page_row_actions', 'rd_duplicate_post_link', 10, 2);
Questa funzione ti permette di vedere un link “Duplicate” che ti permetterà di creare una copia del contenuto attuale come bozza e ti rimanderà all’editor per la modifica del nuovo contenuto duplicato.
Lo slug del nuovo articolo sarà quello del post originale con l’aggiunta del suffisso “-new”. Possiamo modificarlo cambiando il testo ‘-new’ fra virgolette di questa riga:
'post_name' => $post→post_name.'-new',
Possiamo anche aggiungere un suffisso al titolo del nuovo post andando a modificare la riga post_title come in questo esempio:
'post_title' => $post->post_title.' - Copia',
In questo modo il titolo del nuovo articolo sarà “Titolo originale – Copia”.
L’autore del nuovo post sarà l’utente attuale con cui stai effettuando le modifiche.
Se, invece, vuoi mantenere come autore lo stesso utente del post originale dovrai sostituire queste due righe:
$current_user = wp_get_current_user();
$new_post_author = $current_user->ID;
con la riga seguente:
$new_post_author = $post->post_author;
Conclusioni
Se vuoi risparmiare tempo e includere sul tuo sito WordPress una funzione che ti permette di duplicare pagine e post, ora sai esattamente come fare. Abbiamo visto tre metodi diversi:
- il primo richiede un copia e incolla manuale, ma ha lo svantaggio di non duplicare i campi personalizzati;
- il secondo prevede l’uso di un plugin, abbiamo visto come usare due plugin gratuiti creati per questo scopo, Duplicate Page e Yoast Duplicate Post;
- l’ultimo metodo ci permette di creare una funzione personalizzata per duplicare le pagine.
Sei riuscito/a a sfruttare la funzione di duplicazione? Quale metodo hai usato? Faccelo sapere con un commento.
Lascia un commento