
WordPress ne dispose toujours pas d'un bouton intégré permettant de dupliquer un article ou une page, ce qui est surprenant quand on pense à la fréquence à laquelle on réutilise une mise en page pour une nouvelle page d'accueil, un modèle de produit ou un article similaire. La bonne nouvelle, c'est que vous n'avez pas besoin d'un plugin pour cela, car un petit bout de code permet d'ajouter un lien « Dupliquer » bien placé, exactement là où vous vous y attendez.
Je vais vous montrer cet extrait de code, vous expliquer en termes simples le rôle de chaque élément, et vous dire en toute honnêteté dans quel cas précis un plugin constitue en réalité le choix le plus judicieux.
Principaux enseignements
- WordPress ne dispose pas de bouton « Dupliquer » intégré ; pour créer une copie, il faut donc soit utiliser un extrait de code, soit un plugin.
- Un simple extrait de code dans le fichier functions.php permet d'ajouter un lien « Dupliquer » à vos listes d'articles et de pages, sans avoir besoin d'un plugin.
- Il crée la copie sous forme de brouillon, ce qui évite toute publication accidentelle, et il reprend vos catégories et vos balises.
- Un nonce garantit la sécurité du système : seul un clic provenant d'un utilisateur réellement connecté peut déclencher la copie.
- L'article se voit attribuer une nouvelle URL ; modifiez-le donc avant de le publier afin d'éviter que deux pages quasi identiques ne se fassent concurrence.
Pourquoi WordPress ne dispose pas d'un bouton « Dupliquer »
Core a délibérément opté pour un éditeur épuré ; ainsi, tout ce qui n'est pas indispensable à la rédaction est confié aux thèmes, aux plugins ou à votre propre code. La duplication de contenu s'avère toutefois très utile, notamment lorsque vous créez une nouvelle page de service à partir d'une page existante ou que vous réutilisez un long article comme modèle.
Plutôt que de copier-coller manuellement le contenu du bloc et de perdre les paramètres, nous pouvons ajouter nous-mêmes le bouton manquant. Il suffit d'un petit bout de code, et cela fonctionne exactement comme une fonctionnalité intégrée à WordPress.
L'extrait de code qui ajoute un lien « Dupliquer »
Ajoutez ceci au fichier de votre thème enfant : functions.php, ou collez-le dans un plugin de snippets de code pour éviter qu’une faute de frappe ne provoque un écran blanc sur votre site. C’est là que j’ajoute d’autres petites personnalisations, par exemple quand je personnaliser manuellement la page de connexion de WordPress.
// 1. Créer la copie en tant que brouillon
function wpc_duplicate_post_as_draft() {
if ( empty( $_GET['post'] ) || ! isset( $_REQUEST['duplicate_nonce'] ) ) {
wp_die( 'Aucun article à dupliquer.' );
}
// Sécurité : vérification du nonce
if ( ! wp_verify_nonce( $_REQUEST['duplicate_nonce'], basename( __FILE__ ) ) ) {
return;
}
$post_id = absint( $_GET['post'] );
$post = get_post( $post_id );
if ( ! $post || ! current_user_can( 'edit_posts' ) ) {
wp_die( 'Échec de la duplication. Article d'origine introuvable.' );
}
$new_post_id = wp_insert_post( array(
'post_title' => $post->post_title . ' (copie)',
'post_content' => $post->post_content,
'post_status' => 'draft',
'post_type' => $post->post_type,
'post_author' => get_current_user_id(),
) );
// Copier les catégories et les balises
foreach ( get_object_taxonomies( $post->post_type ) as $taxonomy ) {
$terms = wp_get_object_terms( $post_id, $taxonomy, array( 'fields' => 'slugs' ) );
wp_set_object_terms( $new_post_id, $terms, $taxonomy, false );
}
wp_safe_redirect( admin_url( 'edit.php?post_type=' . $post->post_type ) );
exit;
}
add_action( 'admin_action_wpc_duplicate_post_as_draft', 'wpc_duplicate_post_as_draft' );
// 2. Ajouter un lien ' Dupliquer ' aux listes des articles et des pages
function wpc_add_duplicate_link( $actions, $post ) {
if ( current_user_can( 'edit_posts' ) ) {
$url = wp_nonce_url(
admin_url( 'admin.php?action=wpc_duplicate_post_as_draft&post=' . $post->ID ),
basename( __FILE__ ),
'duplicate_nonce'
);
$actions['duplicate'] = '<a href="/fr/' . $url . '/">Duplicata</a>';
}
return $actions;
}
add_filter( 'post_row_actions', 'wpc_add_duplicate_link', 10, 2 );
add_filter( 'page_row_actions', 'wpc_add_duplicate_link', 10, 2 );Enregistrez-le, puis passez la souris sur n'importe quelle ligne sous Articles ou Pages, et un nouveau Duplicata Le lien se trouve à côté des boutons « Modifier », « Modification rapide » et « Corbeille ». Cliquez dessus pour revenir à la liste, où vous trouverez un nouveau brouillon prêt à être utilisé.
Rôle de chaque partie de l'extrait dupliqué
La première fonction est le moteur. Elle lit le message d'origine, puis crée un nouveau message avec le même titre et le même contenu via wp_insert_post, l'enregistre sous le nom de projet pour qu'aucun contenu ne soit publié par erreur, puis parcourt les taxonomies pour copier les catégories et les balises.
Le duplicate_nonce Il s'agit d'un petit jeton de sécurité. Il permet de vérifier que le clic provient bien d'un éditeur réel et connecté, et non d'un lien falsifié envoyé par e-mail à un utilisateur ; c'est pourquoi la fonction s'interrompt si le nonce ne correspond pas.
La deuxième fonction est celle que vous voyez effectivement. Elle s'intègre à la post_row_actions filtre pour ajouter le lien « Dupliquer » à ces actions au survol, ainsi que la correspondance page_row_actions Cette ligne insère le même lien dans vos Pages. Deux filtres, les deux listes sont couvertes.
Extrait en double ou plugin ?
Précisons d’emblée une chose : cette version minimaliste copie le titre, le contenu, le statut et les taxonomies, mais pas vos champs personnalisés, les métadonnées de l’article ni l’image mise en avant. Pour la plupart des articles et des pages, cela suffit amplement, et vous pouvez étendre la fonction pour copier les métadonnées si votre configuration en dépend.
Si vous préférez ne pas toucher au code du tout, ou si vous souhaitez disposer d’options supplémentaires telles que le clonage en masse et la copie des métadonnées prêtes à l’emploi, un plugin dédié tel que « Duplicate Post » de Yoast fait très bien l’affaire. L'avantage de cet extrait de code est simplement qu'il ne nécessite aucun plugin à gérer et vous offre un contrôle total sur ce qui est copié ; c'est pourquoi je l'utilise pour les sites que je gère moi-même.
Un point à vérifier en matière de référencement avant de publier la version dupliquée
Comme ce texte est un véritable article doté de sa propre nouvelle URL, le publier tel quel vous donne deux pages quasi identiques qui se font concurrence pour les mêmes mots-clés, ce qui constitue un cas d'école de contenu dupliqué auto-infligé. Le snippet facilite déjà les choses en conservant la copie sous forme de brouillon ; il suffit donc simplement de la modifier, ainsi que son titre, son slug et son corps, avant qu'elle ne soit mise en ligne.
Si deux pages doivent absolument rester similaires, ajoutez une balise canonique pointant vers la page principale afin que Google sache laquelle classer. Il s'agit des mêmes principes de bonne pratique concernant les titres et les balises que j'aborde dans mon guide sur Correction des balises de titre en double dans WordPress.
Alors, vaut-il mieux utiliser le snippet ou un plugin ?
À mon avis, si vous n’avez aucun problème à coller du code, cet extrait de code est la solution la plus simple, car il ajoute exactement la fonctionnalité que vous souhaitez, sans rien de superflu qui s’exécute en arrière-plan et sans page de paramètres à surveiller. C’est un véritable atout sans plugin, dans le même esprit que mon tutoriel sur Modifier l'URL de wp-admin sans plugin.
Cela dit, je ne dissuaderais personne d'utiliser ce plugin si le code n'est pas son fort ; il est fiable et copie davantage par défaut. Optez pour l'extrait de code si vous préférez garder le contrôle et alléger votre site, ou pour le plugin si vous privilégiez la simplicité et les fonctionnalités supplémentaires. Dans tous les cas, vous disposerez enfin du bouton « Dupliquer » que WordPress aurait dû intégrer dès le départ.
Le snippet génère-t-il une erreur ?
Si le lien « Dupliquer » n'apparaît pas ou si la copie ne contient pas ce dont vous avez besoin, n'hésitez pas à nous contacter ou m'envoyer un courriel et je t'aiderai à le faire fonctionner correctement.
Journal des mises à jour
2 juillet 2026
- J'ai réécrit le guide pas à pas en y intégrant un extrait de code sécurisé avec vérification du nonce, j'ai expliqué le rôle de chaque élément et j'ai ajouté une remarque sur la manière d'éviter le contenu dupliqué lors de la publication du texte.
- J'ai affiné les titres des sections afin que chacun d'entre eux soit clair en soi.
Vous souhaitez que nos publications apparaissent plus souvent sur Google ?
En un clic, Google affichera ce site dans votre rubrique « À la une ».
