- WordPress :6.4
- Statut : résolu
- Ce sujet contient 7 réponses, 2 participants et a été mis à jour pour la dernière fois par
momofr@free.fr, le il y a 11 mois et 3 semaines.
-
AuteurMessages
-
13 mars 2024 à 23 h 38 min #2469554
Bonjour,
Ma configuration WP actuelle
- Version de PHP/MySQL :
- Thème utilisé : OceanWP gratuit
- Extensions en place :
- Nom de l’hébergeur :
- Adresse du site : alixdevesgre.com
Problème(s) rencontré(s) :
J’ai configuré une livraison gratuite à partir de 50euros d’achat, j’ai basculé la livraison gratuite au dessus de la livraison payante dans les réglages Woocommerce comme suggéré dans les diverses tutos que j’ai trouvé sur internet.
La livraison gratuite gratuite apparaît bien dans le panier quand elle est disponible selon mes critères de configuration mais elle n’est pas cochée par défaut, ce qui oblige le client à la cocher lui même avant de passer à l’étape de la validation de commande sinon il n’en bénéficiera pas à cette étape et sera obligé de payer la livraison avec un achet de 50euros ou plus.
J’ai tenté de forcé le cochage de la livraison gratuite avec le code suivant dans le fichier « functions.php » sans succès :
add_action('woocommerce_cart_calculate_fees', 'apply_free_shipping_automatically');
function apply_free_shipping_automatically( $cart ) {
// Récupère le montant minimum pour la livraison gratuite
$free_shipping_threshold = 50; // Remplacez 50 par le montant minimum requis pour la livraison gratuite
// Vérifie si le montant du panier atteint ou dépasse le seuil de livraison gratuite
if ( $cart->subtotal >= $free_shipping_threshold ) {
// Coche la méthode de livraison gratuite si elle est disponible
if ( ! WC()->session->get( 'chosen_shipping_methods' )[0] ) {
WC()->session->set( 'chosen_shipping_methods', array( 'free_shipping' ) );
}
}
}Avez-vous une suggestion pour réussir à forcer le cochage de la livraison gratuite ?
Bien cordialement,
Arnaud14 mars 2024 à 12 h 00 min #2469568Salut, essaye plutôt ce snippet PHP qui masque les autres choix de livraison si le montant est atteint :
// AFFICHER LA LIVRAISON GRATUITE SEULE
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 );Tu dois, bien sûr, définir une livraison gratuite dans la partie expédition de WooCommerce.
14 mars 2024 à 12 h 40 min #2469571Je te remercie pour l’aide apportée. Je suis embêté car je souhaite laisser la possibilité aux clients de choisir une autre option de livraison que la livraison gratuite dans le cas ou ce dernier souhaite tout de même payer pour une livraison plus rapide type Chronopost.
Je comprend que cela ne soit pas facile à paramétrer.
Si cela n’est pas faisable, je ferai au mieux, par exemple en rajoutant du texte sur la livraison gratuite « Cocher ici pour en bénéficier » par exemple.
25 mars 2024 à 16 h 58 min #2470090Bonjour,
La question est résolue, j’ai demandé au support de Woocommerce comment procéder pour cocher par défaut la livraison gratuite quand celle-ci est disponible. On m’a fourni un plugin à télécharger pour faire la même chose que la commande CSS fournie gentiment plus haut et de soumettre ma demande via leur service dédié pour que cela soit potentiellement pris en charge automatiquement par Woocommerce dans une mise a jour ultérieure.
Je vous remercie pour l’aide apportée concernant ma demande.
Bonne après-midi à vous tous.
25 mars 2024 à 17 h 28 min #2470092« la commande CSS fournie »*
*(rectification) « ce snippet PHP »
25 mars 2024 à 17 h 37 min #2470093Salut, ça serait sympa que tu fournisses le code du snippet PHP ici dans ce fil, cela peut aider d’autres personnes.
25 mars 2024 à 18 h 01 min #2470095C’est ce que tu m’as donné plus haut dans les échanges de messages 😉
Je te remercie encore.
25 mars 2024 à 18 h 42 min #2470101Salut, OK.
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.