web-dev-qa-db-fra.com

Activation de la livraison gratuite sur Woo Commerce par articles spécifiques

J'aimerais savoir s'il est possible d'activer la livraison gratuite avec Woo Commerce uniquement si certains articles (ou articles de certaines catégories/classes d'expédition) sont inclus dans le panier.

L'option Livraison gratuite s'active uniquement sur la base de la valeur du panier ou via un code de réduction. J'ai donc étudié la livraison à tarif forfaitaire et découvert qu'elle privilégiait la classe d'expédition la plus chère par rapport à la classe la moins chère. Cela signifie que la classe de livraison gratuite que j'ai créée ne remplace jamais la facturation par défaut.

Je comprends la logique derrière tout cela, mais c’est le contraire de ce dont j’ai besoin, car l’idée est de stimuler les achats de produits à marge bénéficiaire plus élevée en éliminant les frais de livraison lorsqu’ils sont inclus dans une commande.

Je ne sais pas si ce que j'essaie de réaliser n'est tout simplement pas possible dans Woo Commerce. Un coupon qui ne s'applique qu'à certains produits/catégories semble être le plus proche possible, mais je préfère ne pas obliger les utilisateurs à entrer un code à la caisse.

Est-ce que quelqu'un sait s'il existe des moyens plus simples d'offrir aux utilisateurs qui achètent certains produits la livraison gratuite?

8
James O'Neill

Cela ne répond peut-être pas pleinement à votre question, mais le plug-in de livraison de taux de table vous donne la possibilité de définir une priorité pour un taux particulier. En outre, cette discussion donne de nombreuses indications sur les solutions possibles.

1
Ewout

Est-ce que quelqu'un sait s'il existe des moyens plus simples d'offrir aux utilisateurs qui achètent certains produits la livraison gratuite?

En fait, lors de la création d'un produit, vous pouvez simplement le marquer comme produit virtuel directement dans l'éditeur de produit, ce qui exclut toute expédition pour cet article.

5
Nathan

Voici un extrait de Gist extrait d'une discussion sur un problème GitHub lié à @Ewout dans une autre réponse. J'ai ajouté un var_dump(), afin que vous puissiez commenter et vérifier ce que vous voulez supprimer.

$available_methods est une array de:

$available_methods as $method_id => $method

Comparez avec $method_id si vous avez besoin de contrôles plus spécifiques.

// Hide standard shipping option when free shipping is available
add_filter( 'woocommerce_available_shipping_methods', 'wpse90835_hide_standard_shipping_when_free_is_available' );
/**
 *  Hide Standard Shipping option when free shipping is available
 * 
 * @param array $available_methods
 */
function wpse90835_hide_standard_shipping_when_free_is_available( $available_methods )
{
    // Developers!: Dump this to see what you can unset
    # var_dump( $available_methods );

    // remove standard shipping option
    if ( 
        isset( $available_methods['free_shipping'] ) 
        AND isset( $available_methods['flat_rate'] )
    )
        unset( $available_methods['flat_rate'] );


    return $available_methods;
}
2
kaiser

J'ai créé un plugin WooCommerce qui permet aux utilisateurs de configurer des paramètres avancés pour une livraison gratuite. Dans le plugin, il est possible de sélectionner certains produits pour une livraison gratuite.

Vous pouvez trouver le plugin gratuit sur wordpress.org appelé WooCommerce Advanced Free Shipping

J'espère que cela t'aides.

2
Sormano

L'option "virtuelle" supprime tous les frais d'expédition, mais elle supprime également l'option permettant d'expédier à une adresse différente de l'adresse de facturation du client. Ce n'est pas un problème si le client achète également d'autres produits non virtuels, mais le fait s'il ne s'agit que de la seule chose qu'il achète.

0
user51366

Basé sur le code de kaiser (ci-dessus), j'ai créé le code suivant:

    /**
 *  Hide free shipping option when Standard Shipping is available
 * 
 * @param array $available_methods
 */
function mwe_hide_free_shipping_when_standard_shipping_is_available($available_methods) {

    // remove standard shipping option
    if (isset($available_methods['free_shipping']) AND isset( $available_methods['flat_rate'])) {
        unset($available_methods['free_shipping']);
    }

    return $available_methods;
}
add_filter('woocommerce_available_shipping_methods', 'mwe_hide_free_shipping_when_standard_shipping_is_available');

Et lors de la configuration de WooCommerce, la livraison gratuite et le forfait sont activés dans les options d'expédition de Woo. Ensuite, je viens de configurer une classe d’expédition, de spécifier son coût (par exemple, 7,95 £) dans la page Options de forfait, puis d’ajouter cette classe d’expédition aux produits pour lesquels je souhaite facturer 7,95 £.

0
ban-geoengineering