[Résolu] Cacher une méthode de livraison en fonction de l’heure (Créer un compte)

  • WordPress :6.4
  • Statut : résolu
5 sujets de 1 à 5 (sur un total de 5)
  • Auteur
    Messages
  • #2473001
    Debrailly
    Participant
    Padawan WordPress
    61 contributions

    Bonjour,

    Je souhaite cacher une méthode de livraison (en l’occurence la livraison gratuite) après une certaine heure.

    J’ai essayé le code suivant mais il ne semble pas fonctionner et pour une raison que j’ignore. Quelqu’un pourrait-il m’aider la dessus svp ?

    L’idée est de cacher la livraison gratuite après 10h30 (idéalement), 11h si la demie-heure n’est pas prise en charge.

    Voici le code :

    // Cacher livraison selon horaire de commande
    add_filter( 'woocommerce_package_rates', 'hide_shipping_method_based_on_time', 10, 2 );
    function hide_shipping_method_based_on_time( $rates, $package )
    {
    // Set your default time zone (http://php.net/manual/en/timezones.php)
    date_default_timezone_set('Europe/London');

    // Here set your shipping rate Id
    $shipping_rate_id = 'free_shipping:13';

    // When this shipping method is available and after 11 AM
    if ( array_key_exists( $shipping_rate_id, $rates ) && date('H') > 11 ) {
    unset($rates[$shipping_rate_id]); // remove it
    }
    return $rates;
    }

    Ma configuration WP actuelle

    • Version de PHP/MySQL : 8.1/8.0
    • Thème utilisé : Hello
    • Extensions en place : Akismet, All In One Security, Checkout Field Editor For WC Pro, CookieYes, Elementor, Elementor pro, Google Analyrics by MonsterInsights, MailOptin lite, Really Simple SSL, Sogecommerce for WC, Ultimate Addons for Elementor, Updraftplus, WooCommerce, Yoast SEO
    • Nom de l’hébergeur : IONOS
    • Adresse du site : https://absolutesushi.fr/

     

    #2473018
    ferman
    Participant
    Maître WordPress
    7000 contributions

    Bonjour,

    Finalement ça fonctionne? Je ne vois pas la méthode « livraison gratuite » ; seulement « retrait sur place ».

    #2473086
    Debrailly
    Participant
    Padawan WordPress
    61 contributions

    Bonjour,

    Non, car la livraison n’est proposée qu’en fonction du code postal : il faut donc entrer son adresse et si le code postal est ok, alors l’option livraison s’affiche. Les codes postaux sont 06410, 06250, 06560 entre autres.

    Il est 11h là, et l’option est toujours visible 🙁

    #2473095
    ferman
    Participant
    Maître WordPress
    7000 contributions

    Bonjour,

    Bon, le snippet ne fonctionne pas chez moi non plus. Il date de 2020; peut-être n’est-il plus valable pour les dernières versions de woommerce?  Je peux vous proposer une version php/javascript. C’est moins bien que du php « pur » mais c’est mieux que du CSS et chez moi à priori ça fonctionne . Vous pouvez essayer ce code (à mettre dans functions.php).

    function hide_shipping_method_based_on_time_mod(){

    date_default_timezone_set('Europe/London');

    if ( date('H') > 11 ) {?>

    <script>

    document.getElementById('shipping_method_0_free_shipping13').parentElement.remove();

    </script>

    <?php

    }
    }

    add_filter( 'woocommerce_cart_totals_after_shipping', 'hide_shipping_method_based_on_time_mod', 10, 2 );
    add_filter( 'woocommerce_review_order_after_shipping', 'hide_shipping_method_based_on_time_mod', 10, 2 );

    #2473139
    Debrailly
    Participant
    Padawan WordPress
    61 contributions

    Bonjour,

    Cette méthode semble fonctionner, merci beaucoup.

    Et si un nouveau snippet php bien propre est mis en ligne, et bien nous modifierons.

    Merci de votre aide

5 sujets de 1 à 5 (sur un total de 5)
  • Vous devez être connecté pour répondre à ce sujet.