BLOG // NEWS // INSPIRATION

Tutos

[Woocommerce] Afficher Prix barré et Prix soldé produit variable

NE FONCTIONNE PLUS DEPUIS WOOCOMMERCE 3.x.x

[Woocommerce] Afficher Prix barré et Prix soldé produit variable

Un petit article un peu particulier aujourd’hui ! Après de nombreuses recherches vaines pour afficher le prix régulier et le prix soldé d’un produit variable sous Woocommerce, j’ai codé cette petite fonction qui permettra sans doute à beaucoup de personnes de palier à ce souci.

Woocommerce propose cet affichage par défaut, mais uniquement pour les produits simples, ce qui nous intéresse ici c’est d’afficher les 2 prix : le prix de départ barré et le prix soldé, sur les produits variables.

[Woocommerce] Afficher le Prix barré et le Prix soldé pour produit variable

Image http://www.lapirate.fr

Rendez-vous dans le fichier functions.php de votre thème, et rajouter ces lignes de code à la fin du fichier :

//[Woocommerce] Afficher Prix barré et Prix soldé produit variable
add_filter( 'woocommerce_variable_sale_price_html', 'wc_wc20_variation_price_format', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'wc_wc20_variation_price_format', 10, 2 );
function wc_wc20_variation_price_format( $price, $product ) {
$min_price = $product->get_variation_price( 'min', true );
if ($product->product_type == 'variable') {
$available_variations = $product->get_available_variations();
for ($i = 0; $i < count($available_variations); ++$i) {
$variation_id = $available_variations[$i]['variation_id'];
$variable_product1 = new WC_Product_Variation($variation_id);
$regular_price = $variable_product1->regular_price;
}
$price = sprintf( __( 'A partir de <del>%1$s</del> <ins>%2$s</ins>', 'woocommerce' ), wc_price( $regular_price ) , wc_price( $min_price ) );
}
else{
$price = sprintf( __( 'A partir de %1$s', 'woocommerce' ), wc_price( $min_price ) );
}
return $price;
}

6 commentaires

Commentaires
  • nathalie j - 14 novembre 2017 répondre

    Bonjour,

    merci pour ce petit code très utile !
    Je suis en train de le tester mais il y a juste un petit souci, sur les produits variables non soldés, le prix normal est quand même barré et le même prix est ajouté non barré…

    Auriez-vous une idée pour palier à ce problème ?

    Merci beaucoup

    Nathalie

    Graphik4web - 25 janvier 2018 répondre

    Bonjour Nathalie,
    comme je le disais plus tôt, cette astuce était nickel sur la précédente version de WC, rien de nouveau depuis 🙁

  • Stephanie - 14 décembre 2017 répondre

    Ca a failli fonctionner grrrrr

    Ca marche nickel mais ça me l’applique sur TOUS les produits même ceux non soldés. Tu as une idée ? 🙂

    Graphik4web - 25 janvier 2018 répondre

    Depuis la MàJ de woocommerce, il ne fonctionne plus en effet 🙁 Je n’ai pas encore trouvé d’autre solution « bidouille » 🙁

  • Morgane - 11 janvier 2018 répondre

    Ton code est très utile, mais il opère chez moi quelques réactions inattendues.
    D’une part tous les produits simples deviennent des produits « à partir de ». Je pense que l’erreur vient de là :

    else{$price = sprintf( __( ‘A partir de %1$s’, ‘woocommerce’ ), wc_price( $min_price ) );
    remplacer par : else {$price = sprintf( __( ‘%1$s’, ‘woocommerce’ ), wc_price( $min_price ) );

    Par contre ce que je n’explique pas et je Ne m’y connais pas assez en php pour savoir :

    C’est que les produits ayant des variations mais pas de soldes, se retrouvent avec le prix le plus élevé barré et le plus petit comme le prix soldé. Et ça c’est balo …

    As tu une idée ?

    Merci

    Graphik4web - 25 janvier 2018 répondre

    Salut Morgane,
    ce code ne marchait que sous l’ancienne version de WC, obsolète depuis la MàJ, je modifie l’article 🙂

Laisser un commentaire