Le WordPress d'aujourd'hui, décodé pour les développeurs

Tips

Dupliquer une fiche produit industrielle avec toutes ses variantes techniques

Recréer à la main chaque champ répétable d'une fiche produit fait perdre un temps précieux à un fabricant B2B. Un raccourci de duplication complet règle le problème.

Par Clément Hadrot • 15 novembre 2024 • 4 min de lecture • Aucun commentaire
Dupliquer une fiche produit industrielle avec toutes ses variantes techniques

Vingt-trois variantes de diamètre, chacune avec sa propre résistance à la traction, son poids et sa référence fournisseur : recréer une fiche produit quasiment identique à une autre, pour un fabricant qui décline le même article en dizaines de références techniques, devient vite un exercice de recopiage fastidieux et source d’erreurs de saisie.

La fonction de duplication native de l’administration WordPress se limite à copier le contenu principal de l’article, sans toucher aux champs personnalisés complexes. Pour un catalogue B2B où chaque fiche embarque plusieurs groupes de champs répétables, cette limite rend l’outil quasiment inutile tel quel.

Ce que la duplication native ne copie pas

Un clic sur « Dupliquer » via une extension classique recrée bien le titre, le contenu et parfois les taxonomies, mais les groupes répétables ACF, eux, restent souvent vides ou mal copiés, car leur structure en tableau sérialisé demande un traitement spécifique lors de l’enregistrement du nouvel article.

Construire un raccourci de duplication complet

L'essentiel à retenir : Duplication de l'article et de tous ses champs personnalisés ; Traitement spécifique des groupes répétables ; Lien de duplication ajouté dans la liste des produits

La fonction get_fields() d’ACF renvoie l’ensemble des champs personnalisés d’un article sous forme de tableau, groupes répétables compris. Il suffit ensuite de les réappliquer un par un sur le nouvel article créé, avec update_field().

function dupliquer_fiche_produit( $post_id ) {
    $original = get_post( $post_id );

    $nouveau_id = wp_insert_post( array(
        'post_type'   => $original->post_type,
        'post_title'  => $original->post_title . ' (copie)',
        'post_status' => 'draft',
        'post_author' => get_current_user_id(),
    ) );

    $champs = get_fields( $post_id );

    if ( is_array( $champs ) ) {
        foreach ( $champs as $cle => $valeur ) {
            update_field( $cle, $valeur, $nouveau_id );
        }
    }

    $termes = wp_get_object_terms( $post_id, 'famille_produit', array( 'fields' => 'ids' ) );
    wp_set_object_terms( $nouveau_id, $termes, 'famille_produit' );

    return $nouveau_id;
}

Comme get_fields() renvoie déjà les groupes répétables sous forme de tableaux imbriqués, update_field() les réenregistre correctement sans étape supplémentaire, y compris pour des sous-champs de type liste déroulante ou champ relationnel.

Ajouter le raccourci dans la liste des produits

Un lien direct dans la liste d’administration des produits, à côté de « Modifier » et « Corbeille », évite à l’utilisateur de passer par un écran intermédiaire pour dupliquer une fiche.

add_filter( 'post_row_actions', function( $actions, $post ) {
    if ( $post->post_type !== 'produit_industriel' ) {
        return $actions;
    }

    $url = wp_nonce_url(
        admin_url( 'admin-post.php?action=dupliquer_produit&post;=' . $post->ID ),
        'dupliquer_produit_' . $post->ID
    );

    $actions['dupliquer'] = '<a href="' . esc_url( $url ) . '">Dupliquer</a>';

    return $actions;
}, 10, 2 );

Ce qu’il faut réinitialiser après duplication

  • La référence interne unique, qui ne peut pas être identique à l’original
  • Le statut de publication, remis systématiquement en brouillon
  • Les éventuelles dates de validité technique propres à la variante d’origine

Oublier de vider la référence interne est l’erreur la plus fréquente : deux fiches partageant la même référence sèment la confusion dans les recherches internes et les exports vers les commerciaux.

Le cas des champs relationnels

Un champ relationnel vers des documents techniques ou des fiches de sécurité pointe, après duplication, vers les mêmes documents que l’original. C’est généralement le comportement souhaité tant que la variante partage la même documentation, mais il faut le vérifier au cas par cas selon le type de champ concerné.

Une duplication qui ne reproduit pas fidèlement chaque champ répétable coûte plus de temps à corriger qu’une saisie manuelle complète : mieux vaut tester le raccourci sur une fiche complexe avant de le déployer.

En résumé

S’appuyer sur get_fields() et update_field() permet de construire une duplication fidèle, y compris pour des groupes répétables complexes, sans dépendre d’une extension générique mal adaptée au catalogue technique. L’import en masse depuis un ERP reste un chantier distinct, avec ses propres contraintes de mapping de données.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi