2017-09-24 7 views
1

En WooCommerce 3, j'ai ces options d'expédition (réglages):détails Masquer les tarifs forfaitaires lorsque la livraison gratuite disponible en WooCommerce 3

  1. Livraison gratuite: free_shipping:1 - Montant de la commande minimum est fixé à $50.
  2. Expédition normale flat_rate:3 - Montant $5.
  3. Expédition express flat_rate:5 - Montant $10.

Je voudrais Livraison Express option d'être toujours disponible (illustré).

Mais quand Livraison gratuite est disponible (ce qui signifie que le client a plus de 50 $ dans le panier) Je voudrais cacher Livraison normale seulement.

Alors, quand Free shipping est pas disponible (et caché), les taux d'expédition disponibles sont expédition normale et le transport express.

Est-ce possible? Comment puis-je obtenir ceci sur WooCommerce 3?

Répondre

1

Basé sur the official WooCommerce snippet code, faisant quelques changements de lumière, vous serez en mesure de cacher que votre premier forfaitairement quand navigations est disponible gratuitement:

add_filter('woocommerce_package_rates', 'conditionally_hide_shipping_methods', 100, 2); 
function conditionally_hide_shipping_methods($rates, $package) { 
    // HERE yours 2nd flat rate "Express Shipping" (that you never hide) in the array: 
    $flat_rates_express = array('flat_rate:5', 'flat_rate:12', 'flat_rate:14'); 

    $free = $flat2 = array(); 
    foreach ($rates as $rate_key => $rate) { 
     // Updated Here To 
     if (in_array($rate->id, $flat_rates_express)) 
      $flat2[ $rate_key ] = $rate; 
     if ('free_shipping' === $rate->method_id) 
      $free[ $rate_key ] = $rate; 
    } 
    return ! empty($free) ? array_merge($free, $flat2) : $rates; 
} 

Code va dans le fichier function.php de votre thème enfant actif (ou thème) ou aussi dans n'importe quel fichier plugin.

testé sur WooCommerce 3 et œuvres.

Actualiser les caches d'expédition:
1) Tout d'abord vider votre panier.
2) Ce code est déjà enregistré sur votre fichier function.php.
3) Allez dans les paramètres d'une zone d'expédition et désactiver un "taux forfaitaire" (par exemple) et "enregistrer". Puis réactivez ce "taux forfaitaire" et "enregistrer". Vous avez terminé et vous pouvez le tester.

+0

Bonjour Loic, Merci beaucoup pour votre aide. Vous ne savez pas à quel point je suis reconnaissant envers votre aimable assistance. :) Cela fonctionne parfaitement pour ma zone 1. Cependant pour mes zones Zone 2 et Zone 3, il montre seulement la livraison gratuite, mais pas les options d'expédition Express. Je crois qu'il est parce que pour chaque zone d'expédition, chaque livraison express a un autre ID de taux. Par exemple, l'ID du tarif d'expédition express de la zone 2 est flat_rate: 12 et l'ID du tarif d'expédition express de la zone 3 est flat_rate: 14. Comment modifier le code ou mes paramètres afin que ce taux conditionnel s'applique aux 3 zones? Merci beaucoup! –

+1

Merci Loic, ça marche parfaitement :) A bientôt! –