Wenn man ein WooCommerce Shop besitzt und variable Produkte eingebaut hat, dann sieht man bei der Preisanzeige ein „Von bis“ Preisanzeige – also „2-10 CHF“.
Manchmal möchte man aber als Shopbetreiber nicht, dass man den Maximalen Preis angezeigt bekommt – denn das könnte Kunden abhalten zu kaufen. Aus diesem Grund möchte man vielleicht die Preisanzeige in der Übersichtseite so umformatiert haben „Ab 2 CHF“.
Video
Snippet
Mit diesem einfachen Snippet ist das Möglich – einfach dieses Snippet in die functions.php File reinkopieren und abspeichern und dann ist die Anzeige angepasst.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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( __( ' ab %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( __( ' ab %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] ); if ( $price !== $saleprice ) { $price = '<del>' . $saleprice . '</del> <ins>' . $price . '</ins>'; } return $price; } |
Funktioniert bei uns nicht:
syntax error, unexpected ‚&‘
danke für die Info @aykut – du hast absolut recht. ich weiss nicht warum es die formatierung des codes zerschossen hat. Habe es nun korrigiert und jetzt sollte der code gehen.
das „syntax error, unexpected ‘&’“ bedeutet, dass im Code drin komische Zeichen enthalten sind – wie das schräge und falsche ‘ Zeichen anstatt das gerade und richtige ‚ Zeichen.
Nochmal Danke für die Info und noch eine gute Zeit
Leider wieder syntax error… Jemand eine Idee wieso?
hast du genau geschaut ob die einzelne gänsefüsschen eben ein ‚ ist und nicht ein zb `oder so – da muss man aufpassen
Hi, funktioniert das auch bei „buchbaren“ Produkten. Ich nutze das Plugin „booking and appointments PRO“
hallo holger, ja ich denke es „sollte“ funktionieren. aber leider kenne ich dein Plugin nicht und habe es auch nicht. Darum einfach mal testen! wenn du ein backup zur sicherheit machst inkls db – dann bist ja auf der sicheren seite und kannst sowas ausprobieren
Super einfach vielen Dank!
ja bitte bitte 🙂
Hallo,
nachdem ich den Code eingegeben habe ist nun das „inkl. Mwst“ weg.
Hallo.
Vielen Dank für den tollen Tipp. Das klappt wirklich super.
Ich arbeite zur Zeit an einem mehrsprachigen Onlineshop und würde das „ab x€“ gerne nur in der deutschen Version meines Shops angezeigt bekommen. Gibt es eine Möglichkeit das „ab“ in der Englischen Version zu entfernen oder zu übersetzen?
Hoi Sascha, Nun für mehrsprachige Webseiten gibts ja verschiedene Plugins – zb WPML. Du hast leider nicht gesagt, welches du dafür einsetzt. Aber ich kann dir jetzt schon sagen, dass dieser Code für diese Plugins angepasst ist und den den String somit einfach übersetzen kannst.
Hallo Eric-Oliver.
Vielen Dank für deine Antwort. Ich nutze Polylang, allerdings ist es mir damit nicht möglich den String zu übersetzen. Vielleicht hast du ja einen Tipp für mich.
warum ist es nicht möglich den string zu übersetzen? erkennt er die funktion nicht oder wie?
https://polylang.pro/doc/strings-translation/ ne string übersetzung gibts ja.
Hallo Eric-Oliver.
Genau, die Funktion wird nicht erkannt und ich finde daher den richtigen String nicht, sondern nur die normale Einstellung:
{min_price} – {max_price}.
Im Shop wird mir allerdings der ab-Preis angezeigt.
ok, ja dann hat es damit zu tun, dass es ein snippet ist, weisst du wie du daraus ein plugin machen kannst? dann sollte es gehen.
Wie gesagt es ist eigentlich mehrsprachenfähig – das sieht man an diesen komischen texten – zb – __( ‚ ab %1$s‘, ‚woocommerce‘ )
Kann der Steuer Suffix wieder hinzugefügt werden ?
Funkioniert bei mir Super! Dankeschön!!
danke für dein feedback – freut mich wens geklappt hat
Geht es hier um die ‚functions.php‘ des Themes oder um die des WooCommerce-Plugins?
Hallo Michael, du musst nie was in einem Plugin direkt einfügen oder verändern. Es gibt immer nur um die functions.php deines (hoffentlich) Child-Themes!
Diese Lösung funktioniert prima, vielen Dank.
Gibt es auch eine Lösung für folgendes Prolbem: Bei Varianten ändert sich der Preis ja, sobald man bestimmte Produktattribute auswählt (z. B. Größe, Material etc.).
Standardmäsßig (Theme Storefront) steht der Preis aber ganz oben. Ich sehe als User nicht, wie sich der Preis geändert hat, sobald ich alle Attribute ausgewählt habe.
Ich möchte gerne den endgültigen Preis auf der Produkteinzelseite anzeigen, bevor das Prudukt in den Warenkorb gelegt wird.
Ist das möglich?
Danke und Grüße
Sabine
Nachtrag:
Ich möchte meine Frage nochmal verständlicher formulieren:
Ist es möglich, dass auf der Produkteinzelseite der endgültige Preis unten vor dem Button „in den Warenkorb legen“ nochmals angezeigt wird?
hi sabine. ja das ist möglich es ist aber eine template sache – da kannst du sowas anpassen
Danke für die schnelle Antwort!
Schade, ich dachte, ich kann es über Hooks in der functions.php lösen. Sind Child-templates denn stabil, was Updates angeht?
Allerdings weiß ich weder, was genau im template ich ändern muss, noch, wie ich den Hook in der functions.php ansprechen muss bzw. was ich angeben muss, damit der Preis nicht vom einen Hook zum anderen erschoben wird, sondern an einem weiteren Hook zum 2. Mal ausgegeben wird.
Gibt es dazu nicht irgendwo ein Beispiel?
child themes werden nicht von updates betroffen. ich persönlich würde sowas über das design lösen und nicht über hooks. aber ich bin auch nicht auf dem laufenden was storefront betrifft. evtl gibts dafür sogar einen hack oder eine einstellung.
danke schön, hat bei mir wunderbar funktioniert (Divi theme)
freut mich wens funktioniert 🙂 bis bald wieder und danke für dein feedback
Diese Lösung funktioniert super und dank dem Video kinderleicht.
Kann man dies auch bei der Kategorieanzeige anwenden? Meine Produkte haben eine Hauptkategorie (Label) und 2 Nebenkategorien(Men,Women). Im Shop werden immer alle 3 Angezeigt(ich habe es deaktiviert) . Ich würde gerne das nur der Name der Hauptkategorie angezeigt wird.
je nachdem was für ein design du verwendest, zeigt diese lösung auch die „ab xyz preis“ bei kategorien an. wie ich bei dir gesehen funktioniert es ja überall schön bei woman, men und sale… was meinst du nun mit name der hauptkategorie angezeigt? das scheint teil einer anderen frage zu sein….
Vielen Dank
ja bitte gerne 🙂
Danke für das Video, hat mir sehr geholfen. Aber wie bekomme ich hin, wenn dann eine der Varianten ausgewählt wird, dass nur noch der Preis dieser Variante sichtbar ist.
Danke im Voraus.
Hallo, wenn du das Video genau anschaust, dann siehst du das genau der Preis der entsprechende Variante angezeigt wird. WO das angezeigt wird, ist Sache deines Designs – aber sonst wird bei jeder Veränderung des variablen Produkts der entsprechende Preis immer automatisch aktualisiert.
Danke für die schnelle Antwort
ja bitte – immer wieder gerne
Der Hammer! Simpel und funktioniert – danke dafür!
Hallo Eric
Der Code hat bis gestern bei uns einwandfrei funktioniert, Nun wird diese Funktion einfach übergangen, kein Fehler oder sowas, hat eben einfach keine Funktion mehr.
Grüsse
Roli Locher
Hoi Roli – nun ich habs es gerade in mehreren aktuellen Shops eingebaut und überall gehts ohne problem. hast du irgend ein neues plugin eingebaut oder was am code verändert? was sagt errorlog oder die console?
es gibt kein Error aus, die Funktion wird einfach übergangen. Hat bis vor kurzen funktioniert , habe Marketpress B2B installiert und ELEX Rollenbasierte Preise , beide zum test deaktiviert keine Veränderung. Rocket Cache läuft.
Der Fehler kam meiner Meinung nach Update BETHEME. Da hat es einiges durcheinander gebracht, musst das Cache für CSS abstellen.