Dit bericht is een aanvulling op het eerder geplaatste bericht “WooCommerce toon Vanaf prijs en geen prijsrange“.
Bij de functie in bovenstaand bericht werd de prijs niet aangepast wanneer producten met een range in de aanbieding zijn.
Als je onderstaande functie toevoegt aan je functions.php bestand dan zie je in plaats van:
“€ 1.000 tot € 2.000 € 900 tot 1.800″
Dit staan:
“Vanaf € 1.000 € 900″
Je ziet dus de originele minimale prijs doorgestreept gevolgd door de minimale aanbiedingsprijs. Werkt voor overzichts- en detailpagina’s.
/** * Show a minimum price for products with a sale price. */ add_filter('woocommerce_variable_sale_price_html', 'custom_variation_saleprice', 10, 2); function custom_variation_saleprice( $price, $product ) { if ($product->min_variation_price && $product-><span style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" data-mce-type="bookmark" class="mce_SELRES_start"></span>min_variation_regular_price) { $price = '<span class="from">Vanaf</span> '; $price .= woocommerce_price($product->min_variation_regular_price); $price .= woocommerce_price($product->min_variation_price); } return $price; }
Getest op: WordPress 3.8.2 en Woocommerce 2.1.6.
Hoi Tim, werkt goed. Zou ook een mooie setting zijn in Woocommerce zelf.
Hoi Tim,
Bij mij werkt je code niet maar deze wel:
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 ) {
// Main Price
$prices = array( $product->get_variation_price( ‘min’, true ), $product->get_variation_price( ‘max’, true ) );
$price = $prices[0] !== $prices [1] ? sprintf( __( ‘From: %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( __( ‘From: %1$s’, ‘woocommerce’ ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
if ( $price !== $saleprice ) {
$price = ‘
‘ . $saleprice . ‘‘ . $price . ”;}
return $price;
}
Alleen krijg ik het woord “from” niet vertaald naar het nederlands.. Weet jij misschien hoe?
Beste Chris,
Die functie in mijn bericht werkt zeker wel, maar het kan dat de functie aangepast/aangetast wordt door andere custom functions of plug-ins.
Om je vraag te beantwoorden betreffende From vertalen:
Je kan dit het beste doen door het vertaalbestand dat bij je thema of Woocommerce wordt geleverd naar je eigen wens aan te passen. Zoek maar in de map wp-content naar de *.po bestanden.
Natuurlijk kan je ook From aanpassen in je eigen functie. Als het dan nog niet aangepast wordt dan kan het zijn dat er een andere functie is die na jou functie wordt uitgevoerd en jou wijziging weer ongedaan maakt.
Gr, Tim
Hallo Tim,
Ik krijg jouw code niet werkend bij mijn site kan inderdaad komen door een andere plugin.
Het woordje from krijg ik niet vertaald ook niet met een .po bestand. Normaal gesproken heb ik er echt geen moeite mee om vertaalfoutjes aan te passen maar deze is hardnekkig.
Je kan altijd de regel code:
return $price
Aanpassen naar:
return str_replace(‘From’, ‘Vanaf’, $price);
str_replace is een PHP functie:
http://php.net/manual/en/function.str-replace.php
Als dit niet werkt, dan is er toch een plugin/functie die na jou functie nog een bewerking uitvoert. Je kan dit testen door wat met de prioriteitswaarde van je eigen functie te spelen.
Hallo Tim,
Fijne input! Ik heb vorige week jouw code geplaatst en het werkte perfect! Vandaag WordPress en Woocommerce geüpdate en daarbij is natuurlijk de functions.php gereset. Als ik de code nu invoeg krijg ik direct op de homepage een witte pagina. Enig idee wat hier de oorzaak van kan zijn?
Hoi Ernest,
Een witte pagina betekent meestal dat er een PHP fatal error is ontstaan. Het beste kan je even kijken in het error log op de server.
Je kan ook de debug optie van WordPress in wp-config.php inschakelen. Zie daarvoor de volgende pagina:
https://codex.wordpress.org/Debugging_in_WordPress
Als je WooCommerce bijwerkt zou deze van het functions.php bestand af moeten blijven omdat dit bij het thema hoort. Ik vermoed dat je ook het thema hebt bijgewerkt en dan gaan je aanpassingen verloren. In dit geval adviseer ik je om een child theme te maken. Dit scheelt onderhoud in de toekomst. Zie daarvoor: https://codex.wordpress.org/Child_Themes
Gr, Tim
Beste Tim,
We maken gebruik van de wordpress plugin Dynamic Pricing & Discounts. Nu hebben we voor een product verschillende prijzen per hoeveelheid, dus hoe meer hoe goedkoper het product.
Nu heb ik jouw code gebruikt, maar deze laat de gewone prijs nog zien, wat we willen is de minimum prijs in de prijsrange / staffel.
Werkt dat ook met deze plugin?
Beste Mirjam,
Ik vermoed dat jullie plug-in zijn werk pas doet na bovenstaande stukje code.
Een gemakkelijke controle is om te zien of de plug-in ook gebruik maakt van add_filter() voor ‘woocommerce_variable_sale_price_html’ door in de PHP code hierop te zoeken.
Een oplossing zou zijn om de prioriteit van bovenstaande stukje code te veranderen. Hiermee geef je aan wanneer de code wordt uitgevoerd.
Zie hiervoor op onderstaande pagina de variabele $priority.
https://developer.wordpress.org/reference/functions/add_filter/
Bovenstaande code gebruikt de waarde 10, pas het eens aan naar 100 als test.
Succes!
Tim
Beste Tim,
Dank je wel voor de snelle reactie!
Helaas werkt het niet met deze plugin, er zal een custom stukje code moeten komen, we gaan het uitzoeken:)
Groetjes!
Hoi Mirjam,
Als je de plug-in uitschakelt werkt het dan wel?
Jullie plug-in is een betaalde plug-in waardoor ik geen inzage heb in de PHP code.
Als je wil kan je deze meesturen via het contactformulier zodat ik mee kan kijken.
https://www.timdehoog.nl/contact
Gr, Tim
Ha Tim,
Helaas krijg ik hem ook niet werkend… Heb ook alle plugins uitgeschakeld, maar ik zie geen verschil met of zonder deze code. Ben verder geen php kenner, ik kan hooguit wat copy-pasten 🙁
Helaas, want die vanaf prijs is echt precies wat ik zou willen!
Ik gebruik Woocommerce 3.05 en WP 4.7.2. Kan het zijn dat de functie niet werkt op deze versies?
(website zit nog volop in development fase)
Helaas de code getoond op deze pagina werkt alleen met WooCommerce 2.
Heb het helaas nog niet werkend gekregen op 3. Ben er nog mee bezig.
Hoi Tim,
Heb je bovenstaande code ook voor wordpress 4.7.5 Ik zou hem heeeel graag gebruiken, maar krijg ‘m nu niet werkend.
Welke WooCommerce versie gebruik je? Code werkt namelijk niet op versie 3.
Hoi Tim,
Laat ik allereerst beginnen met het feit dat het fantastisch is dat je zoveel mensen wil helpen.
Bij mij hier ondervindt ik hetzelfde probleem. De nieuwste versies van WordPress en Woocommerce en ik krijg op geen enkele wijze aangetoond een “van” en “voor” prijs, waarbij ik de “van” prijs donker wil kleuren, en de “voor” prijs Oranje wil maken.
Erg lastig.
Ik hoop dat je ons verder wil helpen met zulke kwesties.
Vanuit hier word je moeite in elk geval ontzettend gewaardeerd.
Met vriendelijke groet,
Les.