2017-12-26 4 views
1

Basierend auf diesen Beitrag:Anzeige niedrigsten Variations Preis und Discounted Prozentsatz in WooCommerce

Ich habe überall auf meiner Website zu zeigen versucht, der niedrigste Variationspreis mit dem zugehörigen Rabatt%, für variable und nicht variable Produkte.

Hier ist der aktuelle Code, ich verwende:

add_filter('woocommerce_variable_price_html', 'bbloomer_variation_price_format', 10, 2); 


function bbloomer_variation_price_format($price, $product) { 

    // Main Price 
    $prices = array($product->get_variation_price('min', true), $product->get_variation_price('max', true)); 
    $price = $prices[0] !== $prices[1] ? sprintf(__('%1$s', 'woocommerce'), wc_price($prices[0])) : wc_price($prices[0]); 

    // Sale Price 
    $prices = array($product->get_variation_regular_price('min', true), $product->get_variation_regular_price('max', true)); 
    sort($prices); 
    $saleprice = $prices[0] !== $prices[1] ? sprintf(__('%1$s', 'woocommerce'), wc_price($prices[0])) : wc_price($prices[0]); 

    if ($price !== $saleprice) { 
     $price = '<del>' . $saleprice . '</del> <ins>' . $price . '</ins>'; 
    } 
    return $price; 
} 

add_filter('woocommerce_format_sale_price', 'woocommerce_custom_sales_price', 10, 3); 
function woocommerce_custom_sales_price($price, $regular_price, $sale_price) { 
    // Getting the clean numeric prices (without html and currency) 
    $regular_price = floatval(strip_tags($regular_price)); 
    $sale_price = floatval(strip_tags($sale_price)); 

    // Percentage calculation and text 
    $percentage = round(($regular_price - $sale_price)/$regular_price * 100).'%'; 
    $percentage_txt = __(' Save ', 'woocommerce').$percentage; 

    return '<del>' . wc_price($regular_price) . '</del> <ins>' . wc_price($sale_price) . $percentage_txt . '</ins>'; 
} 
add_filter('woocommerce_dropdown_variation_attribute_options_args', 'mmx_remove_select_text'); 

Wenn ich nur die zweite Funktion halten, es funktioniert auf jedem Produkt, aber nicht auf variable Produkten, die auf Shop-Seiten eine Preisspanne zeigen. Wenn ich die erste Funktion hinzufüge, zeigt es anstelle einer Preisspanne den Preis der niedrigsten Produktvariation, aber ohne den Rabatt% daneben.

Ich könnte den% Code der zweiten Funktion zum ersten hinzufügen, aber das ist chaotisch, gibt es eine Möglichkeit, diese Funktionen zusammenzuführen, so dass ich den Rabatt% überall und auch neben der niedrigsten Variation wann gezeigt haben kann es ist ein variables Produkt?

Antwort

1

Dies kann ein wenig die erste Funktion erfolgen ändern, die beide Haken Funktionen ersetzen:

add_filter('woocommerce_get_price_html', 'custom_price_format', 10, 2); 
add_filter('woocommerce_variable_price_html', 'custom_price_format', 10, 2); 
function custom_price_format($price, $product) { 

    // Main Price 
    $regular_price = $product->is_type('variable') ? $product->get_variation_regular_price('min', true) : $product->get_regular_price(); 
    $sale_price = $product->is_type('variable') ? $product->get_variation_sale_price('min', true) : $product->get_sale_price(); 


    if ($regular_price !== $sale_price && $product->is_on_sale()) { 
     // Percentage calculation and text 
     $percentage = round(($regular_price - $sale_price)/$regular_price * 100).'%'; 
     $percentage_txt = __(' Save', 'woocommerce').' '.$percentage; 

     $price = '<del>' . wc_price($regular_price) . '</del> <ins>' . wc_price($sale_price) . $percentage_txt . '</ins>'; 
    } 
    return $price; 
} 

Dieser Code geht in function.php Datei Ihrer aktiven Kind Thema (oder Thema).

Getestet und arbeitet mit Ihren Anpassungen maid in Ihren vorherigen Fragen/Antworten.

+1

@malcom. Können Sie den Beitrag als beantwortet markieren? Das würde in Zukunft helfen, wenn andere nach Hilfe zu diesem Thema suchen. Nur ein Vorschlag, kein Befehl! :-) –

+1

Es gibt eine Verzögerung, um eine Antwort zu validieren, sie ist jetzt als erledigt markiert! – Malcom

Verwandte Themen