Comment masquer les méthodes d'expédition WooCommerce pour certaines conditions
Publié: 2020-06-15La méthode d'expédition est un service et des frais qu'un client voit à la caisse lors de l'achat d'un article. Ce sera une option essentielle pour une boutique de commerce électronique pour une expérience de livraison fluide .
En tant que solution de commerce électronique, WooCommerce propose également des méthodes d'expédition telles que la livraison gratuite , le tarif forfaitaire et le ramassage local , qui peuvent être configurées pour différentes zones d'expédition en fonction des emplacements. Par exemple, l'option de livraison gratuite n'est disponible que pour une certaine gamme de codes postaux proches de l'emplacement du magasin et l'option de tarif forfaitaire est disponible pour l'autre partie des zones de livraison.

Les options d'expédition basées sur l'emplacement peuvent être facilement réalisées par le plugin, mais pour certaines conditions où l'emplacement ne joue pas un rôle vital, il devient très difficile pour les propriétaires de magasins d'y parvenir. Les conditions pourraient être :
- Certaines méthodes d'expédition comme la livraison gratuite ne devraient pas être disponibles si le poids de la commande est supérieur à un certain nombre de livres ou de kg.
- La disponibilité de certaines méthodes d'expédition est également basée sur le nombre de quantités ou le prix de l'ensemble de la commande. Par exemple, si le total de la commande est supérieur à 250 $, seule la méthode de livraison gratuite doit être disponible et aucune méthode de livraison payante ne doit être disponible.
Il peut y avoir plus de conditions de ce type pour lesquelles les méthodes d'expédition doivent être affichées ou masquées lors du paiement, mais dans cet article, nous expliquerons ce qui précède 2. Pour y parvenir pour votre boutique WooCommerce, vous pouvez ajouter un extrait de code ou utiliser l'un des tarifs d'expédition. plugins disponibles.
Utilisation d'un extrait de code
Prenons un exemple de la condition 1 mentionnée ci-dessus où la livraison gratuite ne devrait pas être disponible si le poids de la commande est supérieur à 5 kg. Vous pouvez y parvenir en ajoutant le code ci-dessous dans le fichier functions.php du thème actuellement actif.
Remarque : Ces modifications peuvent être écrasées par une mise à jour du thème actuel. Il est donc recommandé de créer un thème enfant et d'ajouter les extraits de code requis dans le fichier functions.php du thème enfant. Ou vous pouvez utiliser le plugin Code Snippets pour ajouter des extraits personnalisés.
/** * Masquez la livraison gratuite lorsque le poids de la commande est supérieur à 10 kg. * * @param array $rates Tableau des tarifs trouvés pour le package. * tableau @return */ function ts_hide_free_shipping_for_order_weight( $rates, $package ) { $order_weight = WC()->cart->get_cart_contents_weight(); si ( $order_weight > 5 ) { foreach( $tarifs comme $rate_id => $rate_val ) { if ( 'free_shipping' === $rate_val->get_method_id() ) { unset( $tarifs[ $rate_id ] ); } } } retourner $rates ; } add_filter( 'woocommerce_package_rates', 'ts_hide_free_shipping_for_order_weight', 100, 2 );
Ici, le filtre woocommerce_package_rates est utilisé pour modifier les tarifs calculés sur le panier. Il contient tous les tarifs d'expédition qui seront disponibles une fois le produit ajouté au panier. Nous devons donc désactiver la méthode d'expédition requise qui sera la livraison gratuite dans notre cas à partir du tableau renvoyé par ce filtre si le poids de la commande est supérieur à 5 kg.
Fiche produit :

Page du panier avec les méthodes d'expédition :

Un autre exemple de masquage des méthodes d'expédition sur le panier WooCommerce serait d'autoriser uniquement la livraison gratuite lors du paiement lorsque le total de la commande est supérieur à 250 $. Ceci peut être réalisé en ajoutant le code ci-dessous dans le fichier functions.php.

/** * Masquez les tarifs d'expédition lorsque le total de la commande est supérieur à 250 $. * * @param array $rates Tableau des tarifs trouvés pour le package. * tableau @return */ function ts_hide_shipping_for_order_total( $rates ) { $libre = tableau(); $order_total = WC()->cart->get_subtotal(); si($total_commande > 250) { foreach ( $tarifs as $rate_id => $rate ) { if ( 'free_shipping' === $rate->get_method_id() ) { $free[ $rate_id ] = $rate ; } } } revenir ! vide( $libre ) ? $gratuit : $tarifs ; } add_filter( 'woocommerce_package_rates', 'ts_hide_shipping_for_order_total', 100 );
Ici, lorsque le total de la commande est supérieur à 250 $, un tableau avec uniquement des méthodes de livraison gratuites est renvoyé du filtre, sinon tous les tarifs d'expédition sont renvoyés.

Dans les exemples ci-dessus, nous avons pris la référence de la méthode Free Shipping, donc l'identifiant de méthode utilisé est free_shipping. Pour modifier d'autres méthodes d'expédition, les identifiants de méthode sont :
Ramassage local : local_pickup
Taux forfaitaire : flat_rate
La fonction get_method_id() récupère l'identifiant de la méthode uniquement pour les 3 méthodes pour toutes les zones d'expédition et non pour une méthode individuelle d'une seule zone d'expédition, de sorte qu'elle masquera tous les tarifs forfaitaires, les méthodes de ramassage local ou d'expédition gratuite disponibles lors du paiement. Mais si vous souhaitez masquer une méthode d'expédition spécifique, la combinaison de l'ID de méthode d'expédition et de l'ID d'instance doit être utilisée.
Par exemple, 'flat_rate:3' où 3 est l'identifiant d'instance unique stocké pour chaque méthode d'expédition pour une zone dans la base de données. Vous pouvez trouver l'identifiant d'instance de la méthode d'expédition en cliquant avec le bouton droit de la souris sur la méthode d'expédition et en inspectant l'élément dans l'outil de développement de votre navigateur.
Utilisation de différentes extensions WooCommerce pour les méthodes d'expédition
Il existe plusieurs extensions payantes ou gratuites disponibles pour configurer des méthodes d'expédition pour différentes conditions. Certains des plugins les plus utilisés sont :
Plugins payants :
- Table Rate Shipping by WooCommerce : Ce plugin étend les options d'expédition par défaut de WooCommerce en vous offrant des options d'expédition hautement personnalisables.
- Plugin d'expédition forfaitaire avancé pour WooCommerce : Ce plugin vous aidera à configurer les tarifs d'expédition sur votre boutique en fonction de règles d'expédition avancées.
- Plugin WooCommerce Advance Shipping par Jeroen sormani : Ce plugin vous permet d'activer les méthodes d'expédition lors du paiement en fonction de règles définies. Des règles peuvent être définies pour différents détails de panier, détails de produit ou différents détails d'utilisateur .
- Flexible Shipping Pro pour WooCommerce par WP Desk : Ce plugin vous permet d'activer la méthode d'expédition en fonction de l'article particulier, de l'élément de ligne du panier, des règles de prix ou de poids .
Plugins gratuits :
Certains des plugins ci-dessus ont également une version gratuite pour eux avec des fonctionnalités limitées. Elles sont:
- WooCommerce Advanced Free Shipping par Jeroen Sormani : Il s'agit d'une version gratuite du plugin WooCommerce Advanced Shipping. La seule différence avec les deux plugins est que ce plugin n'autorise que la méthode d'expédition gratuite pour les règles définies et que le plugin payant autorise toutes les méthodes d'expédition.
- Expédition flexible pour WooCommerce par WP Desk : Il s'agit d'une version gratuite du plugin Flexible Shipping Pro pour WooCommerce. Il permet de définir des méthodes d'expédition uniquement pour le prix et le poids.
Pour une explication détaillée des plugins mentionnés ci-dessus, vous pouvez consulter cet article.
Conclusion
Comme nous l'avons vu dans cet article, les options d'expédition avancées peuvent être obtenues en ajoutant simplement un extrait de code sur votre site Web ou en utilisant divers plugins disponibles. Vous pouvez donc essayer l'extrait de code donné ou expérimenter l'un des plugins et nous faire savoir si cela est bénéfique pour votre boutique WooCommerce.