# Préremplir un lien « demander un devis » avec la référence produit depuis l’URL

> Les commerciaux d'un fabricant B2B perdent du temps à identifier le produit concerné par chaque demande de devis. Un paramètre transmis dans l'URL du formulaire de contact referme cette perte de temps sans développement lourd.

- Auteur : Clément Hadrot
- Publié le : 2026-02-26
- Mis à jour le : 2026-02-26
- Catégorie : Tips
- URL : https://wpmoderne.dev.wordpress-developpement.fr/tips/preremplir-lien-demande-devis-reference-produit-url/

## L’essentiel

- La référence produit transite par un simple paramètre d'URL
- Le formulaire de contact préremplit un champ caché sans modification lourde
- Aucune donnée sensible n'est exposée par ce paramètre

Combien de minutes un commercial perd-il chaque jour à recouper un message de demande de devis générique avec le produit réellement consulté par le client quelques instants plus tôt ? Sur un catalogue de plusieurs centaines de références techniques, cette perte de temps s'accumule vite, et l'information — pourtant disponible au moment du clic — se perd entre la fiche produit et la boîte de réception du service commercial.

La solution ne nécessite ni formulaire dédié par produit, ni base de données supplémentaire : transmettre la référence produit dans l'URL du lien vers le formulaire de contact, puis préremplir un champ à partir de ce paramètre au chargement de la page.

## Construire le lien depuis la fiche produit

Sur chaque fiche produit, le bouton « Demander un devis » pointe vers la page du formulaire de contact avec la référence ajoutée en paramètre GET :

```
function wpm_lien_demande_devis( $post_id ) {
    $reference = get_post_meta( $post_id, 'reference_produit', true );
    $url_base  = get_permalink( get_page_by_path( 'demande-de-devis' ) );

    return add_query_arg( 'reference', rawurlencode( $reference ), $url_base );
}
```

La fonction native `add_query_arg()` gère proprement l'ajout du paramètre même si l'URL de base contient déjà d'autres paramètres, et `rawurlencode()` protège contre les caractères spéciaux qu'une référence produit peut parfois contenir, comme un slash ou un dièse.

## Récupérer le paramètre côté formulaire

Sur la page du formulaire, un champ caché est prérempli à partir du paramètre transmis, après validation stricte de son contenu :

> L'essentiel à retenir : La référence produit transite par un simple paramètre d'URL ; Le formulaire de contact préremplit un champ caché sans modification lourde ; Aucune donnée sensible n'est exposée par ce paramètre

```
function wpm_reference_produit_depuis_url() {
    if ( empty( $_GET['reference'] ) ) {
        return '';
    }

    return sanitize_text_field( wp_unslash( $_GET['reference'] ) );
}
```

```
<input type="hidden" name="reference_produit_devis" value="<?php echo esc_attr( wpm_reference_produit_depuis_url() ); ?>">
```

La double protection `wp_unslash()` puis `sanitize_text_field()` évite qu'une valeur manipulée dans l'URL n'introduise du code indésirable dans le champ affiché, une précaution à ne jamais sauter même pour un champ apparemment inoffensif.

### Afficher un message de confirmation visible

Pour que le client visiteur comprenne que sa demande sera bien associée au bon produit, un message visible au-dessus du formulaire confirme la référence détectée :

```
$reference = wpm_reference_produit_depuis_url();

if ( $reference ) {
    echo '<p>Votre demande concerne la référence : ' . esc_html( $reference ) . '</p>';
}
```

## Transmettre l'information jusqu'au commercial

Au moment de l'envoi du formulaire, la référence produit doit apparaître clairement dans l'email reçu par le service commercial, plutôt que d'être noyée dans un champ générique de commentaire libre :

- Un champ dédié dans le corps de l'email, distinct du message libre du client.
- Un objet d'email qui inclut directement la référence, pour un tri visuel rapide dans la boîte de réception.
- Une copie de la référence dans les métadonnées de la demande si celle-ci est enregistrée comme type de contenu `demande_devis`.

## Cas où le paramètre est absent ou invalide

Un visiteur peut arriver sur le formulaire directement, sans être passé par une fiche produit. Dans ce cas, le champ de référence reste simplement vide et le formulaire fonctionne normalement, sans bloquer l'envoi de la demande. Une vérification supplémentaire peut comparer la référence transmise à la liste des références existantes, pour ignorer silencieusement une valeur qui ne correspondrait à aucun produit réel :

```
function wpm_reference_produit_valide( $reference ) {
    $produits = get_posts( array(
        'post_type'  => 'produit',
        'meta_key'   => 'reference_produit',
        'meta_value' => $reference,
        'fields'     => 'ids',
    ) );

    return ! empty( $produits );
}
```

> Conseil maison : un paramètre d'URL transmis pour préremplir un champ ne doit jamais être considéré comme fiable tel quel. Validez-le systématiquement avant affichage et avant tout traitement métier, même pour une simple référence produit.

## Ce que cette technique ne calcule pas

Elle ne calcule aucun tarif ni n'automatise la génération du devis lui-même : elle se limite à transmettre une information de contexte pour faire gagner du temps au commercial qui traite ensuite la demande manuellement. Le calcul automatique d'un devis relève d'un développement bien plus large, hors du périmètre de ce simple lien préconfiguré.

## En résumé

Un seul paramètre d'URL, correctement validé côté serveur, suffit à relier durablement une demande de devis au produit consulté, sans construire un formulaire distinct par référence ni alourdir le catalogue d'une logique superflue. Les commerciaux gagnent un contexte immédiat, exactement là où il est utile.
