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

Astuces

Adapter l’affichage du prix HT ou TTC selon que le visiteur vient du BTP ou non

Plutôt que deux boutiques séparées, un paramètre de session suffit à basculer l'affichage des prix entre professionnels du bâtiment et particuliers.

Par WordPress Développement • 10 juillet 2021 • 4 min de lecture • Aucun commentaire
Adapter l'affichage du prix HT ou TTC selon que le visiteur vient du BTP ou non

Comment savoir si le visiteur qui consulte une plaque de plâtre est un artisan qui l’achète en gros pour un chantier, ou un particulier qui refait sa salle de bains ? La réponse la plus honnête est qu’on ne le sait jamais avec certitude à l’avance, et qu’il vaut mieux le lui demander une seule fois, puis mémoriser son choix.

Un fournisseur de matériaux qui vend à la fois aux professionnels du bâtiment et aux particuliers se retrouve vite face à un dilemme d’affichage des prix : les professionnels raisonnent en hors taxes, les particuliers en toutes taxes comprises. Créer deux boutiques distinctes double la maintenance pour un problème qui se résume, au fond, à un simple affichage.

Le choix du visiteur, stocké en session

La solution la plus légère consiste à proposer, dès l’arrivée sur le site, un choix explicite « je suis un professionnel du BTP » ou « je suis un particulier », stocké dans la session PHP native plutôt que dans un compte utilisateur. Aucune inscription n’est nécessaire, et le choix reste valable tant que la session est active.

add_action( 'init', function() {
    if ( ! session_id() ) {
        session_start();
    }

    if ( isset( $_GET['profil'] ) && in_array( $_GET['profil'], array( 'btp', 'particulier' ), true ) ) {
        $_SESSION['profil_visiteur'] = sanitize_text_field( $_GET['profil'] );
    }
} );

Ce paramètre profil, transmis par exemple depuis un lien de bandeau d’accueil, alimente ensuite l’ensemble de l’affichage des prix sur ses visites suivantes, sans redemander la question à chaque page.

Basculer l’affichage sur la fiche produit

L'essentiel à retenir : Un seul catalogue, deux affichages de prix ; Choix mémorisé en session, sans compte obligatoire ; Bandeau de rappel visible en permanence

Le prix hors taxes est déjà stocké en base comme valeur de référence ; le prix TTC se calcule à la volée selon le taux de TVA applicable au produit, lui aussi renseigné en champ personnalisé.

function afficher_prix_produit( $post_id ) {
    $prix_ht = (float) get_post_meta( $post_id, 'prix_ht', true );
    $tva     = (float) get_post_meta( $post_id, 'taux_tva', true );

    $est_pro = isset( $_SESSION['profil_visiteur'] )
        && $_SESSION['profil_visiteur'] === 'btp';

    if ( $est_pro ) {
        return number_format( $prix_ht, 2, ',', ' ' ) . ' € HT';
    }

    $prix_ttc = $prix_ht * ( 1 + $tva / 100 );

    return number_format( $prix_ttc, 2, ',', ' ' ) . ' € TTC';
}

Le prix affiché ne provient jamais de deux jeux de données distincts : il s’agit toujours du même prix hors taxes en base, converti différemment selon le profil mémorisé.

Éviter la confusion pour le visiteur non identifié

Tant qu’aucun choix n’a été fait, mieux vaut afficher les deux montants côte à côte plutôt qu’un seul par défaut, au risque de faire croire à un particulier que le prix affiché est définitif alors qu’il manque la TVA.

  • Affichage double par défaut, tant que le profil n’est pas connu
  • Bandeau permanent rappelant le profil actuellement sélectionné
  • Lien pour changer de profil à tout moment, visible en pied de page

Le cas du panier et des totaux

La bascule ne peut pas s’arrêter à la fiche produit : le panier, les totaux de commande et les récapitulatifs par courriel doivent appliquer la même règle, faute de quoi le visiteur découvre un montant différent au moment de payer, ce qui ruine la confiance installée jusque-là.

Un prix qui change entre la fiche produit et le panier coûte plus cher en support client qu’une TVA mal appliquée.

Sécuriser la donnée de session

Le paramètre profil_visiteur reste une simple préférence d’affichage : il ne doit jamais servir, seul, à calculer un prix de vente réel appliqué en caisse ou lors du paiement en ligne, où d’autres règles fiscales et de facturation entrent en jeu.

Le cas du visiteur qui change d’avis

Un artisan qui commence sa visite en tant que particulier pour comparer des prix, puis se rend compte qu’il achète en réalité pour un chantier professionnel, doit pouvoir basculer son profil sans recharger la page depuis le début. Un lien de changement de profil, positionné dans le bandeau permanent, réécrit simplement le paramètre de session et recharge uniquement la zone d’affichage des prix, sans perte du panier en cours de constitution.

Notre verdict

Un paramètre de session bien positionné évite de dupliquer tout un catalogue pour un problème d’affichage. La double tarification appliquée réellement en caisse, avec émission de factures distinctes selon le statut du client, reste un sujet à traiter séparément, avec des règles comptables propres.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

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

Voir tous ses articles

Dans la même veine

À lire aussi