“Come duplicare una pagina su WordPress”? Se hai mai desiderato creare un nuovo contenuto simile a uno già esistente sul tuo sito ti sarai fatto molto spesso questa domanda.
Il processo di duplicazione di pagine o post può essere noioso e a rischio di errori, specialmente se riguarda molte pagine.
In questa guida, ti mostreremo come duplicare una pagina in WordPress (ma anche un post o un prodotto WooCommerce) semplificando notevolmente il processo di creazione di nuovi contenuti simili.
I metodi che analizzeremo sono tre:
- sfruttando la funzione di copia di WordPress
- installando un plugin (per copie singole o in blocco)
- scrivendo il nostro codice custom
Se non l’hai già fatto, ti consiglio di dare un’occhiata alla mia guida WordPress, un manuale o un tutorial completo per creare il tuo sito web in totale autonomia!
Copiare un contenuto (pagina o post) sfruttando la funzione di copia di WordPress
Immaginiamo di voler duplicare una pagina o un post senza installare un plugin. Per farlo, possiamo adoperare una funzione nativa di WordPress, copiando e incollando il contenuto in un nuovo articolo o in una nuova pagina.
Vediamo la procedura:
- Apri il post o la pagina che vuoi duplicare. Non selezionare alcun blocco di contenuto.
- Nella parte superiore destra della schermata di modifica, troverai una icona con tre punti di sospensione. Cliccaci, si aprirà un menu a discesa. Seleziona la voce “Copia tutti i blocchi”. Riceverai una notifica che conferma la copia del contenuto.
- Crea una nuova pagina o un nuovo post. Fai clic sul primo blocco vuoto presente nella schermata di editing e incolla il contenuto copiato.
Il contenuto del tuo post o pagina originale sarà ora presente nel tuo nuovo post.
Importante: è consigliabile apportare modifiche al nuovo post per renderlo unico. La duplicazione esatta può confondere i visitatori e danneggiare il posizionamento del tuo sito.
Se vuoi saperne di più, ti consiglio di leggere la mia guida SEO.
Proseguiamo: come duplicare una pagina WordPress con un plugin!
Duplicare una pagina o un post adoperando un plugin
Installare un plugin per duplicare pagine e contenuti è certamente la via più rapida di procedere.
Nel repository ufficiale di WordPress puoi trovare tantissimi plugin che servono a questo scopo. Te ne indico due:
- Yoast Duplicate Post: serve a duplicare post, pagine e qualsiasi contenuto, inclusi i custom post type. E’ sviluppato da Enrico Battocchi e il team di Yoast: un nome, una garanzia.
- Duplicate Page: come il precedente, serve a duplicare qualsiasi tipologia di contenuto, pagine, post e custom post type. Molto semplice ed efficace.
Vale la pena di spendere due parole su WooCommerce. Il più importante plugin per gestire il tuo negozio online è dotato di una funzionalità nativa che permette di duplicare le schede prodotto. Dunque se il tuo obiettivo è questo non avrai bisogno di altro software aggiuntivo.
Per duplicare pagine e post in blocco, è possibile ricorrere a un plugin che si chiama WP Bulk Post Duplicator. L’ultimo aggiornamento, però, risale a 6 anni fa. Potrebbe non funzionare o danneggiare il tuo sito. Ti consiglio di testarlo in un ambiente di staging.
Creare un plugin per duplicare pagine e contenuti
I plugin che ti ho suggerito non ti soddisfano? Vuoi avere il massimo controllo sul codice e personalizzarlo a tuo piacimento? La soluzione è creare il proprio plugin per duplicare pagine e contenuti.
Nel mio sito web ho creato un piccolo plugin chiamato “ML Simple Content Duplicator”.
Ho scritto il codice, creato un file chiamato ml-simple-content-duplicator.php
all’interno di una cartella chiamata, a sua volta, “ML Simple Content Duplicator”. Ho caricato la cartella via FTP all’interno della directory dei plugin e, tramite il pannello di controllo di WordPress, ho attivato l’estensione.
Ti scrivo qui il codice, affinché ti sia di ispirazione:
<?php
/**
* Plugin Name: ML Simple Content Duplicator
* Plugin URI:
* Description: Un semplice plugin per duplicare contenuti in WordPress.
* Version: 1.0
* Author: Your Name
* Author URI:
* License: GPL2
*/
// Prevenire l'accesso diretto al file del plugin.
if (!defined('ABSPATH')) {
exit;
}
// Aggiungere un link "Duplica" nell'elenco dei post e delle pagine.
function ml_duplicate_post_link($actions, $post) {
// Controllo dei permessi: solo chi può pubblicare o modificare post può vedere l'opzione "Duplica".
if (!current_user_can('publish_posts') || !current_user_can('edit_posts')) {
return $actions;
}
$actions['duplicate'] = '<a href="' . esc_url(wp_nonce_url('admin.php?action=ml_duplicate_post_as_draft&post=' . $post->ID, 'ml_duplicate_' . $post->ID, 'duplicate_nonce')) . '" title="' . esc_attr__("Duplica questo articolo") . '" rel="permalink">' . esc_html__("Duplica") . '</a>';
return $actions;
}
add_filter('post_row_actions', 'ml_duplicate_post_link', 10, 2);
add_filter('page_row_actions', 'ml_duplicate_post_link', 10, 2);
// Funzione per duplicare effettivamente il post o la pagina.
function ml_duplicate_post_as_draft() {
// Verifica del nonce.
if (!isset($_GET['duplicate_nonce']) || !wp_verify_nonce($_GET['duplicate_nonce'], 'ml_duplicate_' . $_GET['post'])) {
return;
}
// Controllo dei permessi: solo chi può pubblicare o modificare post può duplicarli.
if (!current_user_can('publish_posts') || !current_user_can('edit_posts')) {
wp_die('Non hai il permesso di duplicare posts.');
}
$post_id = (isset($_GET['post']) ? absint($_GET['post']) : 0);
if (!$post_id) {
wp_die('ID del post non valido.');
}
$post = get_post($post_id);
if (!$post) {
wp_die('Post non trovato.');
}
$current_user = wp_get_current_user();
$new_post_author = $current_user->ID;
$new_post_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 . '-copy',
'post_parent' => $post->post_parent,
'post_password' => $post->post_password,
'post_status' => 'draft',
'post_title' => $post->post_title . ' (Copia)',
'post_type' => $post->post_type,
'to_ping' => $post->to_ping,
'menu_order' => $post->menu_order
);
$new_post_id = wp_insert_post($new_post_args);
$post_meta = get_post_meta($post_id);
foreach ($post_meta as $key => $values) {
foreach ($values as $value) {
add_post_meta($new_post_id, $key, $value);
}
}
wp_redirect(admin_url('post.php?action=edit&post=' . $new_post_id));
exit;
}
add_action('admin_action_ml_duplicate_post_as_draft', 'ml_duplicate_post_as_draft');
Bene, siamo arrivati alla fine di questo articolo su come duplicare una Pagina su WordPress. Spero sia stata una lettura utile!
Hai dubbi, domande, curiosità? Lascia un commento!
Hai bisogno di aiuto per sviluppare il tuo sito WordPress? Contattami!