Afficher seulement la livraison offerte sur WooCommerce

Afficher seulement la livraison offerte sur WooCommerce

Pour n’afficher que la livraison offerte quand le client y a droit, cochez dans WooCommerce la case « Masquer les frais de port lorsque la livraison gratuite est disponible ». Plus besoin de fichier à déposer sur le serveur comme à l’époque de la première version de cet article. Il reste un cas où un court code est utile : quand la livraison gratuite vient d’une autre extension.

En bref

  • Le problème : une fois le seuil atteint, le client voit encore les tarifs payants et peut en choisir un par erreur.
  • La solution native : une case dans WooCommerce > Réglages > Expédition > Réglages de livraison.
  • Le retrait en magasin reste affiché, ce qui est le comportement attendu.
  • La case ne reconnaît que la méthode « Livraison gratuite » de WooCommerce.
  • Gratuité calculée par une extension ? Un code de quelques lignes fait le même travail.

Le problème

Vous proposez plusieurs modes de livraison, et la livraison offerte à partir d’un certain montant. Quand le client atteint ce montant, WooCommerce affiche la livraison gratuite… à côté du Colissimo à 7,90 € et du point relais à 4,90 €. C’est confus, et certains clients cochent une option payante sans s’en rendre compte.

La solution native, en trois étapes

  1. Créez la livraison gratuite. Dans WooCommerce > Réglages > Expédition, ouvrez votre zone, ajoutez la méthode Livraison gratuite et choisissez « Montant minimum de commande » avec votre seuil.
  2. Cochez la case. Toujours dans l’onglet Expédition, section Réglages de livraison, cochez Masquer les frais de port lorsque la livraison gratuite est disponible, puis enregistrez.
  3. Testez. Faites un panier sous le seuil, puis un panier au-dessus. Au-dessus, seule la livraison offerte doit rester, avec le retrait en magasin si vous le proposez.

Le résultat ne change pas ? WooCommerce garde les tarifs en cache. Cochez temporairement « Activer le mode de débogage » dans les mêmes réglages, refaites le test, puis décochez-le.

Le cas où la case ne suffit pas

La case de WooCommerce ne reconnaît que sa propre méthode « Livraison gratuite ». Si votre livraison offerte vient d’une autre extension, par exemple une ligne à 0 € dans une grille Flexible Shipping ou un tarif de transporteur, elle ne masquera rien.

Dans ce cas, ce code garde les tarifs à 0 € et le retrait en magasin, et masque le reste dès qu’une livraison gratuite existe :

add_filter( 'woocommerce_package_rates', 'wycan_seulement_livraison_offerte', 100 );

function wycan_seulement_livraison_offerte( $rates ) {
    $methodes_retrait = array( 'local_pickup', 'pickup_location' );
    $offertes         = array();
    $retraits         = array();

    foreach ( $rates as $rate_id => $rate ) {
        if ( in_array( $rate->get_method_id(), $methodes_retrait, true ) ) {
            $retraits[ $rate_id ] = $rate;
        } elseif ( 0.0 === (float) $rate->get_cost() ) {
            $offertes[ $rate_id ] = $rate;
        }
    }

    return $offertes ? $offertes + $retraits : $rates;
}

Où le placer ? Le plus simple est une extension comme Code Snippets. Vous pouvez aussi l’ajouter au fichier functions.php de votre thème enfant, ou dans un fichier PHP déposé dans wp-content/mu-plugins/ (créez le dossier s’il n’existe pas, et commencez le fichier par <?php). Un fichier dans mu-plugins s’active tout seul et ne peut pas être désactivé par erreur depuis l’administration.

Pour aller plus loin

Forfait, poids, codes promo, points relais : toutes les méthodes sont dans notre guide frais de port et livraison WooCommerce.

Vous préférez qu’on règle vos frais de port pour vous ? Écrivez-nous, on regarde votre boutique.

Sommaire
À lire aussi

D’autres articles qui peuvent vous servir

Facturation électronique WooCommerce : comment mettre votre boutique en conformité

Facturation électronique WooCommerce : comment mettre votre boutique en conformité

Lire l’article →
Cookies et consentement : pourquoi une simple bannière ne suffit plus

Cookies et consentement : pourquoi une simple bannière ne suffit plus

Lire l’article →
Bouton de rétractation WooCommerce : le guide pour se conformer à l’article L221-21

Bouton de rétractation WooCommerce : le guide pour se conformer à l’article L221-21

Lire l’article →

Un projet, une question ?

Devis gratuit · Acompte remboursable · Solde si satisfait · Sans engagement