Que cela soit une page, un article, un type de contenu personnalisé, on a parfois envie de pouvoir copier à l’identique. Cela est arrivé à tout le monde, vous avez du contenu avec une certaine mise en page et vous avez besoin de le dupliquer pour vous faire gagner du temps.
Cela peut vite devenir laborieux de devoir ouvrir l’article que vous souhaitez dupliquer, sélectionner tout le contenu à la main en essayant de ne rien oublier, en espérant ne rien casser dans l’article original, faire un (CTRL + C ou ⌘ + C) en croisant les doigts que tout soit bien copié dans le “presse papier”, puis créer un nouvel article et aller coller le contenu au bon endroit. Si vous devez multiplier ces gestes des dizaines de fois il y a des chances de s’y perdre et de faire des bêtises…
Il se trouve que malheureusement nativement WordPress ne propose pas d’option pour copier des contenus dans l’administration. Nous allons donc voir ensemble quelles sont les options qui existent pour pouvoir dupliquer vos articles sans effort d’un simple click.
L’option “Copier tout le contenu” de Gutenberg
Pour commencer, je vais vous parler d’une option assez peu connue que propose Gutenberg, le nouvel éditeur natif de WordPress. C’est une solution intermédiaire qui n’est pas idéale, mais qui permet d’aller plus vite dans l’idée d’aller copier le contenu d’un article pour le coller sur nouveau.
Si vous ne souhaitez pas installer un plugin spécifique pour dupliquer vos pages c’est une option à prendre en compte. Pour cela vous allez devoir aller dans votre article et repérer les trois petits points en haut à droite de l’éditeur de page WordPress.
Puis dans le menu déroulant, vous allez trouver tout en bas de la liste, dans la partie “Outil”, l’option “copier tout le contenu”. Vous cliquez dessus et vous attendez le message qui vous indique que votre contenu a bien été copié.
Ensuite, vous n’avez qu’à créer une nouvelle page, coller (CTRL + V ou ⌘ + V) le contenu et enregistrer le brouillon. Votre article a été copié à l’identique !
Mais bon, on est d’accord que ce n’est pas vraiment la solution parfaite. C’est une bonne option à connaitre si vous avez besoin de dupliquer du contenu de temps en temps, mais si vous avez beaucoup de pages à copier ou si vous voulez copier des articles en masse, rien ne remplacera l’utilisation d’un plugin dédié à cette fonction.
L’option “Copier” selon JetPack
Le super plugin JetPack propose parmi ses nombreuses options, la possibilité d’activer l’option de copie de l’intégralité des articles et des pages, y compris des étiquettes et des réglages.
Dupliquez les articles, pages, témoignages et portfolios existants. L’intégralité du contenu sera copiée, y compris le texte, les images à la une, les options de partage et plus encore. Une fois installé, un sous onglet “Copier” apparaitra sous vos contenus.
Post Duplicator
Le plugin Post Duplicator permet de copier tous les types d’éléments comme les articles, les pages, les type de contenus personnalisés (custom post type), les taxonomies, les champs personnalisés… Ce plugin a relativement peu de fonctionnalités additionnelles, ce qui en fait une solution simple à utiliser.
- Plugin régulièrement mis à jour
- +200 000 installations
- Note 4,5/5
Fonctionnalités
- Ajoute la fonction “duplicate” (dupliquer)
- Sélectionner le statut de l’élément copié (identique à l’original, brouillon, etc.)
- Personnaliser la date de publication
Duplicate Page
Le plugin Duplicate Page offre la possibilité de copier des articles, des pages, des types de contenus personnalisés (custom post type) et de choisir deux fonctions basiques : le statut de l’élément dupliqué et le comportement après copie.
- Plugin régulièrement mis à jour
- +1 000 000 installations
- Note 4,5/5
Fonctionnalités
- Ajoute l’option “duplicate this” (dupliquer ceci)
- Choix du statut de l’élément copié (publié, brouillon, etc.)
- Choix du comportement de copie (ouvrir le brouillon, revenir à la liste des éléments, etc.)
Duplicate Page and Post
Duplicate Page and Post est un plugin pour dupliquer les pages, les articles et les types de contenus personnalisés (custom post type). Les fonctionnalités sont basiques, le plugin fait ce qu’on lui demande et les équipes annoncent que c’est une solution plus rapide et légère en comparaison aux autres plugins concurrents.
- Plugin régulièrement mis à jour
- +70 000 installations
- Note 4,5/5
Fonctionnalités
- Ajoute la fonction “click here to clone” (cliquer ici pour dupliquer)
- Créer un clone d’une page
- Créer un clone d’un article
- Créer un clone d’un custom post type (CPT).
- Sélectionner l’éditeur qui servira pour la copie (Classic et Gutenberg)
- Sélectionner le statut des éléments dupliqués (brouillon, publié…)
- Choix du comportement après avoir cliqué sur le bouton dupliquer.
Yoast Duplicate Post
C’est le mastodonte des plugins de duplication sur WordPress. Anciennement “Duplicate Post” le plugin a été racheté par les équipes de Yoast, connues pour leurs solutions d’aide au SEO. Yoast Duplicate Post est un plugin qui permet de cloner tous les types de contenu présent sur votre site WordPress. Il offre certaines fonctionnalités intéressantes pour définir le comportement lors de la copie d’un élément : type d’éléments, champs ou catégories à exclure, autorisations selon les utilisateurs, etc.
- Plugin régulièrement mis à jour
- +3 000 000 installations
- Note 5/5
Fonctionnalités
- Ajoute l’option “clone” (cloner) en dessous de tous les types de contenu
- Permet de sélectionner plusieurs éléments et de les cloner en masse
- Ajoute l’option “new draft” (nouveau brouillon) pour ouvrir l’élément copié en mode brouillon
- Permet de sélectionner quels types d’éléments sont “duplicables”
- Offre des possibilités de personnalisation du comportement du plugin
Dupliquer une page ou un article WordPress sans plugin
Terminons cet article avec une solution dédiée aux geeks qui aiment mettre la main dans le code et sont habitués à ajouter des fonctions PHP pour améliorer les fonctionnalités de leur site WordPress.
Ici nous allons voir comment il est possible d’ajouter l’option “dupliquer” dans votre administration WordPress en ajouter un peu de PHP dans notre fichier function.php.
Ne vous inquiétez pas, ce n’est pas si compliqué que cela en a l’air. Mais en préalable à toute modification du fichier function.php de votre site, voici plusieurs conseils qui éviteront d’éventuels problèmes :
- Faites une sauvegarde de votre base de données
- Installer un thème enfant (vous pouvez suivre notre tutoriel pour créer un thème enfant)
- Faire les modifications uniquement sur le fichier function.php de votre thème enfant
Pour installer un thème enfant au plus vite vous pouvez tout simplement :
- Télécharger ce modèle de thème enfant
- Uploader le dossier sur votre FTP dans le dossier wp-content/themes
- Éditer la ligne “Template” du fichier style.css avec le nom exact du dossier de votre thème parent (il porte la plupart du temps le nom de votre thème)
- Activer le thème enfant dans le menu Apparence/Thèmes de WordPress
Vous êtes prêts pour modifier le fichier function.php de votre thème enfant.
Ajouter l’option Dupliquer à votre function.php
Le code suivant permet d’ajouter l’option “dupliquer” aux articles et aux pages WordPress.
/* *fonction pour dupliquer un article. */ 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!'); } /* * vérification de nonce */ if ( !isset( $_GET['duplicate_nonce'] ) || !wp_verify_nonce( $_GET['duplicate_nonce'], basename( __FILE__ ) ) ) return; /* * obtenir l'ID de l'article original */ $post_id = (isset($_GET['post']) ? absint( $_GET['post'] ) : absint( $_POST['post'] ) ); /* * obtenir toute les données de l'article */ $post = get_post( $post_id ); /* * obtenir l'auteur de l'article pour être l'auteur du nouvel article copié * si vous ne souhaitez pas cela vous pouvez remplacer ces deux lignes par : $new_post_author = $post->post_author; */ $current_user = wp_get_current_user(); $new_post_author = $current_user->ID; /* * s'il existe des données, créer la copie */ if (isset( $post ) && $post != null) { /* * nouvel article 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 ); /* * insérer l'article avec wp_insert_post() fonction */ $new_post_id = wp_insert_post( $args ); /* * obtenir toutes taxonomies et les copier sur le nouvel article */ $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); } /* * dupliquer toutes les meta avec deux reqêtes SQL */ $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); } /* * rediriger vers la page d'édition du nouvel article */ 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' ); /* * Ajouter le bouton "dupliquer" dans l'administration */ 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="Dupliquer" rel="permalink">Dupliquer</a>'; } return $actions; } /* * appliquer aux articles */ add_filter( 'post_row_actions', 'rd_duplicate_post_link', 10, 2 ); /* * appliquer aux pages */ add_filter('page_row_actions', 'rd_duplicate_post_link', 10, 2);
Pour ajouter cette fonction, je vous conseille vivement de le faire depuis votre FTP.
Ainsi s’il y a le moindre problème et si vous ne pouvez plus accéder à votre administration WordPress vous pourrez simplement retirer la fonction et rétablir la situation.
Modifier votre function.php depuis votre FTP
- Ouvrez votre FTP et trouvez le fichier function.php de votre thème enfant. Ici mon thème parent est “generatepress” et mon thème enfant est “generatepress_child”.
- Télécharger le fichier function.php sur votre bureau pour le modifier ou éditez-le directement en faisant un cliquer doit et en choisissant “Afficher/Éditer” dans la liste déroulante
- Copiez/coller le code tel quel dans votre fichier function.php
- Enregistrez votre modification et remplacez le fichier function.php existant par cette nouvelle version
Voilà ! Vous avez modifié votre fichier function.php et y avez ajouté une fonction permettant d’ajouter la fonctionnalité pour dupliquer vos articles. Vous pouvez aller vérifier dans votre administration WordPress, si vous avez suivi toutes les étapes pas à pas vous devriez voir apparaitre le bouton “Dupliquer” en dessous du titre vos articles.
Copier / Dupliquer pour conclure
Pouvoir dupliquer du contenu peut vous faire gagner beaucoup de temps et comme vous le voyez plusieurs possibilités s’offrent à vous pour installer cette fonctionnalité sur votre site WordPress.
Si vous cherchez une solution rapide et efficace, choisissez d’installer un plugin parmi la liste proposée dans cet article. Ils proposent tous les mêmes fonctionnalités de base, certains offrent des options de personnalisations supplémentaires, mais sachez que parfois un plugin simple et qui va droit au but est parfois plus conseillé qu’un plugin plus fourni, mais plus lourd à utiliser.
En revanche, si vous êtes à l’aise avec l’ajout de fonctions PHP à votre site WordPress alors optez pour l’ajout de la fonction “copier” sans plugin, une solution qui vous évite d’ajouter un plugin supplémentaire !
Bonjour, est il possible d’exporter une page complète puis de la réimporter sur un autre site ?
Merci d’avance