Parfois, vous rencontrerez une situation où vous voulez créer un nouvel article ou une nouvelle page qui est identique (ou presque identique) à un article ou une page existant sur votre site.

Si l’article ou la page est long ou inclut beaucoup de médias, le processus d’ajouter tout ce contenu à nouveau peut sembler très laborieux. De plus, si vous avez beaucoup d’articles qui se ressemblent beaucoup, ce sera très frustrant d’avoir à saisir manuellement à nouveau tout votre texte ou à ajouter tous les fichiers médias pour créer vos nouveaux articles ou pages.

Une option pourrait être d’ouvrir la publication existante (pour plus de commodité, nous allons utiliser « publication » pour faire référence aux articles et aux pages) dans une fenêtre de navigateur ou un onglet, puis de créer votre nouvelle publication dans une autre fenêtre et de basculer entre les deux, copier et coller votre contenu. Après tout, les versions récentes (Gutenberg) de WordPress rendent cela assez facile, avec une option « Copier tout le contenu » à votre disposition.

Mais si vous devez le faire encore et encore, vous risquez de faire des erreurs. Que se passe-t-il si vous modifiez accidentellement l’article original, en surchargeant le contenu que vous avez déjà publié sur votre site ? Ou si vous avez un grand nombre d’articles à copier et que vous perdez la trace de ceux que vous avez créés ?

Cela peut être une migraine potentielle.

Heureusement, il existe un moyen plus simple. Il existe des extensions gratuites qui vous permettront de dupliquer vos articles et vos pages, afin que vous puissiez les modifier et les retoucher pour créer de nouvelles publications qui sont presque identiques à votre contenu existant.

Dans cet article, nous allons vous montrer quelques-unes des méthodes que vous pouvez utiliser pour faire cela, et mettre en évidence certains des meilleures extensions pour cette tâche.

Mais d’abord, nous allons vous montrer comment dupliquer une page ou un article dans WordPress de manière semi-manuelle, sans extension. Cela implique un copier-coller mais WordPress le rend si facile à faire que, si vous n’avez qu’un seul article à copier, ce sera probablement plus rapide que d’installer une extension et de le faire de cette façon.

Comment dupliquer une page ou un article dans WordPress, la méthode semi-manuelle

Cette méthode peut être plus rapide si vous n’avez qu’un seul article à dupliquer, car elle vous fait gagner du temps pour installer une extension. Si vous avez un tas d’articles à dupliquer, je vous recommande sérieusement de sauter cette section : vous trouverez beaucoup plus rapide, pour ne pas dire plus précis, d’utiliser une extension.

Donc, pour ceux d’entre vous qui ont juste besoin de dupliquer un article ou une page, voici comment le faire.

Commencez par ouvrir votre article ou votre page existante. Assurez-vous que vous n’avez pas de bloc individuel sélectionné en cliquant à l’extérieur d’un bloc sur votre article ou en sélectionnant l’onglet Document dans le volet d’édition à droite de l’écran. Si vous avez sélectionné un bloc, WordPress copiera simplement le contenu de ce bloc et non le document entier.

Cliquez maintenant sur l’ellipse en haut à droite de l’écran de montage (trois points disposés les uns au-dessus des autres).

L'option copier tout le contenu dans WordPress
L’option copier tout le contenu dans WordPress

Un menu s’affiche. Vers le bas de ce menu, vous verrez une option Copier tout le contenu. Cliquez dessus et vous aurez un message vous indiquant que votre contenu a été copié.

Créez maintenant votre nouvelle publication. Donnez-lui un titre puis cliquez dans le premier bloc vide qui a été créé pour vous sur l’écran d’édition. Utilisez les touches de raccourci pour coller sur votre clavier (Ctrl + V sur un PC, Cmd + V sur un Mac, ou faites un clic droit et sélectionnez Coller dans le menu contextuel qui apparaît.

Le contenu de votre ancienne publication apparaîtra maintenant dans votre nouvelle publication. C’est de la magie ! (OK, peut-être pas.)

Maintenant vous pouvez modifier cette publication et la rendre différente de l’ancienne. C’est quelque chose que je vous conseille fortement de faire – il n’y a pas beaucoup d’intérêt à avoir des articles de blog qui sont exactement des doublons les uns des autres sur votre site. Non seulement cela embrouillera les visiteurs, mais c’est aussi mauvais pour le SEO.

Mais que faire si vous voulez créer plusieurs doublons de votre article ? Lire la suite…

Comment dupliquer une page ou article dans WordPress à l’aide d’une extension

De loin le moyen le plus rapide, le plus simple et le plus fiable pour dupliquer des publications est d’utiliser une extension. Cela vous permettra de gagner du temps, d’éviter toute erreur humaine et de copier n’importe quel type de publication que vous souhaitez. En fait, d’après notre expérience, la duplication d’articles est en fait plus courante avec les types de publication personnalisés. Il est inhabituel d’avoir deux articles de blog qui sont presque identiques l’un à l’autre, mais c’est assez commun pour les produits dans une boutique, par exemple.

Voici donc quelques extensions qui rendront le processus de duplication des publications facile, et des conseils sur la façon de les utiliser.

WooCommerce

Vous vous demandez peut-être pourquoi j’ai inclus WooCommerce ici, car il s’agit d’un extension eCommerce, pas d’une extension de duplication.

Mais il est important de savoir que WooCommerce vous permet de dupliquer des produits sans avoir à installer une extension supplémentaire. Donc avant de commencer à chercher une extension de duplication de publication et de l’utiliser pour dupliquer vos produits, il vous suffit d’utiliser les fonctionnalités qui sont fournies avec WooCommerce.

Si vous allez sur l’écran principal Produits dans WooCommerce et passez votre souris sur n’importe quel produit, vous verrez un lien Dupliquer sous cet article.

L'option de duplication dans WooCommerce
L’option de duplication dans WooCommerce

Cliquez simplement sur ce lien Dupliquer et un nouveau produit sera créé. Vous serez directement dirigé vers l’écran de modification du nouveau produit pour que vous puissiez y apporter des modifications et ensuite le publier.

Il est à noter que le slug pour le nouveau produit sera le slug pour l’ancien produit avec -copy ajouté, donc même si vous changez le titre du nouveau produit, vous devrez également modifier le slug.

Édition d'un produit dupliqué
Édition d’un produit dupliqué

Duplicate Post

Duplicate Post est l’extension la plus populaire pour dupliquer des publications, avec plus de 3 millions de téléchargements.

Une fois que vous l’avez activé, elle ajoute un lien Cloner à chaque publication dans l’écran principal des publications dans l’administration de WordPress.

Le plugin Duplicate Post
L’extension Duplicate Post

Cliquez sur le lien Cloner sous la publication que vous voulez dupliquer, et une nouvelle publication sera créée pour vous avec le même contenu, le même titre et un état de brouillon.

Vous pouvez ensuite modifier cette nouvelle publication et lui donner un nouveau titre (ce que je vous conseille fortement – WordPress vous permet de dupliquer les titres mais ce n’est pas très bon pour l’expérience utilisateur).

Il ajoute également le même lien Cloner aux pages et aux types de publication personnalisés (si vous les activez dans les réglages).

Duplicate Page

L’extension Duplicate Page a été téléchargée plus de 900.000 fois et est une alternative à l’extensiona Duplicate Post ci-dessus.

Une fois l’extension installée, allez dans l’écran d’administration des articles ou des pages, ou dans l’écran d’administration de votre type de publication personnalisé, et vous trouverez un lien Dupliquer ceci sous chaque publication. Voici le mien avec un type de publication personnalisé :

Le plugin Duplicate Page
L’extension Duplicate Page

Cliquez sur le lien et vous obtiendrez un nouvel article (ou une page, ou un type de publication personnalisé) avec le même contenu et le même titre que l’article original, avec un état de brouillon. Vous devrez le modifier et modifier son slug avant de le publier.

Note : Si vous utilisez WooCommerce, le lien Dupliquer ceci de cette extension ne sera pas affiché sur votre écran Produits. WooCommerce l’écrase avec son propre lien Dupliquer que j’ai décrit plus tôt dans cet article.

Comment dupliquer des articles ou des pages en masse

Les extensions que j’ai déjà mentionnées vous permettront de dupliquer les publications une à la fois. Mais que faire si vous avez besoin de dupliquer tous les articles de votre site, ou tous les articles d’un type de publication personnalisé ? Ou peut-être tous les articles que vous avez publiés cette année ?

L’extension WP Bulk Post Duplicator vous permettra de faire exactement cela. Au lieu d’ajouter un lien pour dupliquer des articles individuels, il vous donne un écran de paramétrage qui vous permet de dupliquer des articles en masse selon les critères que vous avez définis.

Note : Cette extension n’a pas été mise à jour depuis deux ans au moment d’écrire ces lignes, nous vous conseillons donc de l’installer sur un site de staging et de la tester avant de l’utiliser sur un site en production. Nous l’avons utilisé sans problème sur notre site de staging.

Une fois l’extension installée, allez dans Réglages > WP Bulk Post Duplicator pour voir l’écran des réglages de l’extension.

Commencez par sélectionner les types de publications que vous voulez dupliquer ainsi que les états des articles. Ainsi, si vous sélectionnez et publiez un article, l’extension dupliquera tous vos articles publiés. Si au lieu de cela vous sélectionnez des articles et des brouillons, il ne fera que dupliquer tous vos articles.

Réglages de la duplication en masse - type de post et statut
Réglages de la duplication en masse – type de publication et état

Faites défiler vers le bas et sélectionnez l’année des articles que vous voulez dupliquer (ceci est facultatif). Vous pouvez également spécifier le statut des nouveaux articles créés. Si vous ne sélectionnez rien ici, la valeur par défaut sera Brouillon.

Réglages de duplication en masse - année et statut de publication
Réglages de duplication en masse – année et état de publication

Cliquez sur le bouton Dupliquer et l’extension dupliquera vos publications. Ici, vous pouvez voir toutes mes pages dupliquées, avec 12 pages publiées existantes et 12 nouvelles pages en brouillons. J’ai ensuite besoin de travailler sur toutes les pages et les modifier avant de les publier. Cela prendra évidemment du temps, mais cela a été rendu plus rapide par la duplication groupée,

Écrivez votre propre extension de duplication

Que faire si vous ne voulez pas utiliser une extension tierce pour dupliquer des publications et que vous préférez utiliser votre propre code ?

Pas de problème. Suivez simplement ces étapes pour créer votre propre extension de duplication de plubications.

1. Configuration de l’extension

Commencez par configurer l’extension. Ajoutez un nouveau fichier dans votre répertoire wp-content/plugins et ajoutez-y ce texte commenté (vous pouvez modifier le vôtre pour refléter votre nom d’auteur) :

<?php
/*
Plugin Name: Kinsta Duplicate posts and pages
Plugin URI: https://kinsta.com
Description: Plugin to accompany kinsta posst on duplicating posts in WordPress. Allows for duplication of posts and pages.
Version: 1.0
Author: Rachel McCollin
Author URI: https://rachelmccollin.com
TextDomain: kinsta
License: GPLv2
*/

2. Création de la fonction

Ajoutez maintenant la fonction pour dupliquer les publication et accrochez-la à un hook d’action. Ce hook d’action n’existe pas encore : ne vous inquiétez pas, nous allons bientôt le créer.

function kinsta_duplicate_post(){
}
add_action( 'admin_action_kinsta_duplicate_post', 'kinsta_duplicate_post' );

Maintenant, créons cette action, qui fera partie d’une fonction permettant d’ajouter le lien de duplication aux écrans des articles et des pages.

function kinsta_duplicate_post_link( $actions, $post ) {
 if ( current_user_can( 'edit_posts') ) {
  $actions['duplicate'] = 'Duplicate';
 }
 return $actions;
}
add_filter( 'post_row_actions', 'kinsta_duplicate_post_link', 10, 2 );
add_filter( 'page_row_actions', 'kinsta_duplicate_post_link', 10, 2);

Cela ajoutera le lien pour dupliquer, mais ne dupliquera rien pour l’instant.

3. Ajout de fonctionnalités de duplication

Ajoutons le code pour la duplication. Tout le reste du code va dans votre fonction kinsta_duplicate_post() vide.

Tout d’abord, vérifions qu’un article valide a été sélectionné et vérifions qu’il n’y a pas de nonce, par sécurité :

global $wpdb;

// Die if post not selected
if (! ( isset( $_GET['post']) || isset( $_POST['post'])  || ( isset($_REQUEST['action']) && 'kinsta_duplicate_post' == $_REQUEST['action'] ) ) ) {
 wp_die( __( 'Please select a post to duplicate.', 'kinsta' ) );
}

// Verify nonce
if ( ! isset( $_GET['duplicate_nonce'] ) || ! wp_verify_nonce( $_GET['duplicate_nonce'], basename( __FILE__ ) ) ) {
 return;
}

Il nous faut maintenant récupérer l’ID de l’article à dupliquer, ainsi que ses données :

// Get id of post to be duplicated and data from it
$post_id = ( isset( $_GET['post']) ? absint( $_GET['post'] ) : absint( $_POST['post'] ) );
$post = get_post( $post_id );

Nous pouvons l’utiliser pour définir un tableau d’arguments et insérer un nouvel article dans la base de données, en utilisant wp_insert_post(), mais d’abord, ajouter une instruction conditionnelle pour vérifier que l’article n’est pas nul :

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

}

Ajoutez ceci à l’intérieur de cette déclaration conditionnelle :

// args for new post
$args = array(
 'comment_status' => $post->comment_status,
 'ping_status'    => $post->ping_status,
 'post_author'    => $post->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 new post
$new_post_id = wp_insert_post( $args );

Nous allons maintenant aller chercher les taxonomies dans l’ancienne publication et les ajouter à la nouvelle :

// add taxonomy terms to the new post

// identify taxonomies that apply to the post type
$taxonomies = get_object_taxonomies( $post->post_type );

// add the taxonomy terms to the new post
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 );
}

Ensuite, nous ajouterons toutes les métadonnées supplémentaires, à l’aide d’une requête SQL :

// use SQL queries to duplicate postmeta
$post_metas = $wpdb->get_results("SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=$post_id");
if ( count( $post_metas )!=0 ) {
 
$sql_query = "INSERT INTO $wpdb->postmeta ( post_id, meta_key, meta_value ) ";
 
foreach ( $post_metas as $post_meta ) {
  $meta_key = $post_metas->meta_key;
  if( $meta_key == '_wp_old_slug' ) continue;
  $meta_value = addslashes( $post_metas->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 );

}

Enfin, nous vérifions de quel type de publication il s’agit et redirigeons vers l’écran correspondant.

// redirect to admin screen depending on post type
$posttype = get_post_type( $post_id );
wp_redirect( admin_url( 'edit.php?post_type=' . $posttype ) );

Maintenant, en dehors de l’accolade pour if ( isset( $post ) && $post != null ) nous ajoutons un article d’erreur :

else {
 // display an error message if the post id of the post to be duplicated can't be found
 wp_die( __( 'Post cannot be found. Please select a post to duplicate.', 'kinsta' ) );
}

Et c’est tout !

L’extension complète

Voici le code complet de l’extension :

<?php

/* Plugin Name: Kinsta Duplicate posts and pages

Plugin URI: https://kinsta.com
Description: Plugin to accompany kinsta posst on duplicating posts in WordPress. Allows for duplication of posts and pages. Version: 1.0 Author: Rachel McCollin
Author URI: https://rachelmccollin.com
TextDomain: kinsta
License: GPLv2
*/

/********************************************************************
kinsta_duplicate_post() - duplicates the selected post
*********************************************************************/

function kinsta_duplicate_post(){

global $wpdb;

// Die if post not selected
if (! ( isset( $_GET['post']) || isset( $_POST['post'])  || ( isset($_REQUEST['action']) && 'kinsta_duplicate_post' == $_REQUEST['action'] ) ) ) {

wp_die( __( 'Please select a post to duplicate.', 'kinsta' ) );
}

// Verify nonce
if ( ! isset( $_GET['duplicate_nonce'] ) || ! wp_verify_nonce( $_GET['duplicate_nonce'], basename( __FILE__ ) ) ) {
return;
}

// Get id of post to be duplicated and data from it
$post_id = ( isset( $_GET['post']) ? absint( $_GET['post'] ) : absint( $_POST['post'] ) );
$post = get_post( $post_id );

// duplicate the post
if ( isset( $post ) && $post != null ) {

// args for new post
$args = array(
'comment_status' => $post->comment_status,
'ping_status'    => $post->ping_status,
'post_author'    => $post->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 new post
$new_post_id = wp_insert_post( $args );

// add taxonomy terms to the new post

// identify taxonomies that apply to the post type
$taxonomies = get_object_taxonomies( $post->post_type );

// add the taxonomy terms to the new post
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 );

}

// use SQL queries to duplicate postmeta
$post_metas = $wpdb->get_results("SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=$post_id");

if ( count( $post_metas )!=0 ) {
 
 $sql_query = "INSERT INTO $wpdb->postmeta ( post_id, meta_key, meta_value ) ";

 foreach ( $post_metas as $post_meta ) {

  $meta_key = $post_metas->meta_key;
  if( $meta_key == '_wp_old_slug' ) continue;
  $meta_value = addslashes( $post_metas->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 );

 }

 // redirect to admin screen depending on post type
 $posttype = get_post_type( $post_id );
 wp_redirect( admin_url( 'edit.php?post_type=' . $posttype ) );

 } else {

  // display an error message if the post id of the post to be duplicated can't be found
  wp_die( __( 'Post cannot be found. Please select a post to duplicate.', 'kinsta' ) );
 }

}
add_action( 'admin_action_kinsta_duplicate_post', 'kinsta_duplicate_post' );

// Add the duplicate link to action list for post_row_actions
function kinsta_duplicate_post_link( $actions, $post ) {

 if ( current_user_can( 'edit_posts') ) {
  $actions['duplicate'] = 'Duplicate';
 }

 return $actions;

}
add_filter( 'post_row_actions', 'kinsta_duplicate_post_link', 10, 2 );
add_filter( 'page_row_actions', 'kinsta_duplicate_post_link', 10, 2);

Vous pouvez aussi trouver l’extension complète sur github.

Félicitations ! Vous avez maintenant votre propre extension pour dupliquer les articles et les pages de votre site WordPress.

Crédit : Ce code a été en partie écrit en référence à un article sur le blog d’Hostinger.

Résumé

L’utilisation d’une extension pour dupliquer des articles et des pages peut être plus rapide que de le faire manuellement et peut éliminer le risque d’erreurs lors de la copie de contenu.

Si vous n’avez qu’une seule publication à copier, vous trouverez peut-être plus rapide d’utiliser la fonction « Copier tout le contenu » intégrée dans WordPress, mais pour plus d’une publication, il vaut mieux utiliser une extension. Si vous utilisez l’une des extensions listées ci-dessus, ou peut-être codez-vous la vôtre, vous pourrez dupliquer autant d’articles, pages ou types de publication personnalisés que vous le souhaitez.

Si vous le faites de cette façon, vous gagnerez du temps et (plus important encore), vous éliminerez le risque de modifier accidentellement votre publication originale alors que vous auriez dû modifier la publication dupliquée.