WooCommerce peut afficher plusieurs modes de livraison en même temps. Dans certains cas, il peut être utile de simplifier ce choix pour n’afficher que la livraison gratuite, ou la livraison gratuite avec une autre option précise.
Contenu avancé #
Cet article utilise du code PHP. Une erreur peut rendre le site inaccessible. Il est recommandé d’utiliser un thème enfant ou un plugin de snippets.
Objectif #
Masquer certains modes de livraison lorsque la livraison gratuite est disponible dans WooCommerce.
Code 1 : afficher uniquement la livraison gratuite #
À utiliser si tu veux que le client ne voie plus que la livraison gratuite dès qu’elle est disponible.
/**
* Cacher les autres modes de livraison lorsque la livraison gratuite est disponible.
*
* @param array $rates Tableau des tarifs trouvés pour le colis.
* @return array
*/
function my_hide_shipping_when_free_is_available( $rates ) {
$free = array();
foreach ( $rates as $rate_id => $rate ) {
if ( 'free_shipping' === $rate->method_id ) {
$free[ $rate_id ] = $rate;
break;
}
}
return ! empty( $free ) ? $free : $rates;
}
add_filter( 'woocommerce_package_rates', 'my_hide_shipping_when_free_is_available', 100 );
Ce code conserve uniquement le mode free_shipping lorsqu’il est présent.
Code 2 : afficher la livraison gratuite et le retrait sur place #
À utiliser si tu veux laisser au client le choix entre la livraison gratuite et le retrait sur place.
/**
* Cacher les autres modes de livraison sauf la livraison gratuite et le retrait sur place.
*
* @param array $rates Tableau des tarifs trouvés pour le colis.
* @return array
*/
function my_hide_shipping_except_free_and_local_pickup( $rates ) {
$allowed = array();
foreach ( $rates as $rate_id => $rate ) {
if ( 'free_shipping' === $rate->method_id || 'local_pickup' === $rate->method_id ) {
$allowed[ $rate_id ] = $rate;
}
}
return ! empty( $allowed ) ? $allowed : $rates;
}
add_filter( 'woocommerce_package_rates', 'my_hide_shipping_except_free_and_local_pickup', 100 );
Ce code masque les autres modes de livraison et conserve uniquement :
- la livraison gratuite ;
- le retrait sur place.
Code 3 : base personnalisable #
À utiliser si tu veux adapter la logique à d’autres méthodes de livraison.
/**
* Conserver uniquement certains modes de livraison lorsqu'ils sont disponibles.
*
* @param array $rates Tableau des tarifs trouvés pour le colis.
* @return array
*/
function my_custom_allowed_shipping_methods( $rates ) {
$allowed_methods = array( 'free_shipping', 'local_pickup' );
$filtered_rates = array();
foreach ( $rates as $rate_id => $rate ) {
if ( in_array( $rate->method_id, $allowed_methods, true ) ) {
$filtered_rates[ $rate_id ] = $rate;
}
}
return ! empty( $filtered_rates ) ? $filtered_rates : $rates;
}
add_filter( 'woocommerce_package_rates', 'my_custom_allowed_shipping_methods', 100 );
Dans ce code, tu peux modifier cette ligne :
$allowed_methods = array( 'free_shipping', 'local_pickup' );
Elle permet de définir quels modes doivent rester visibles.
Comprendre le fonctionnement #
- WooCommerce calcule tous les modes de livraison disponibles ;
- le filtre
woocommerce_package_ratespermet de modifier cette liste ; - les snippets ci-dessus ne changent pas les réglages WooCommerce ;
- ils changent uniquement les méthodes visibles pour le client.
Quand utiliser cette méthode #
- si tu veux simplifier le choix de livraison ;
- si la livraison gratuite doit devenir prioritaire ;
- si tu veux éviter d’afficher des frais payants inutilement ;
- si tu veux garder seulement certaines méthodes précises.
Points d’attention #
- ces snippets modifient l’affichage des modes de livraison, pas leur configuration ;
- le nom technique de la méthode doit être correct, par exemple
free_shippingoulocal_pickup; - teste toujours avec plusieurs paniers et plusieurs zones de livraison ;
- ne modifie jamais directement le thème principal.
Astuce utile #
Commence toujours par le code le plus simple. N’utilise une version personnalisée que si tu en as réellement besoin.
Pour aller plus loin #
- Limiter les frais d’expédition avec un montant maximum
- Utiliser des formules avancées pour calculer les frais d’expédition
Pour conclure #
Ces snippets permettent de rendre le choix de livraison plus simple et plus lisible pour le client. En proposant plusieurs variantes, tu peux choisir la solution la plus adaptée à ton fonctionnement sans complexifier inutilement la boutique.

