Dies ist das technische Support-Forum für WPML – das mehrsprachige WordPress-Plugin.
Mitlesen können alle, doch nur WPML-Kunden können hier Fragen veröffentlichen. Das WPML-Team antwortet im Forum an 6 Tagen pro Woche, 22 Stunden am Tag.
Sun | Mon | Tue | Wed | Thu | Fri | Sat |
---|---|---|---|---|---|---|
- | - | 9:00 – 18:00 | 9:00 – 18:00 | 9:00 – 18:00 | 9:00 – 18:00 | 9:00 – 18:00 |
- | - | - | - | - | - | - |
Zeitzone des Supporters: America/Lima (GMT-05:00)
Schlagwörter: WCML
Zugehörige Dokumentation:
Dieses Thema enthält 13 Antworten, hat 0 Stimmen.
Zuletzt aktualisiert von Andreas W. Vor 1 Monat, 1 Woche.
Assistiert von: Andreas W..
Autor | Beiträge |
---|---|
April 12, 2025 um 6:58 am #16924970 | |
patrickA-31 |
Hallo, vielen Dank für deine Erklärung. Ich hatte gehofft, "Price Based on Country for WooCommerce" nutzen zu können, um Kunden in verschiedenen Währungen einkaufen zu lassen. Allerdings gibt es laut dem Support-Team dieses Plugins eine Inkompatibilität mit "Woo Product Bundle Premium", wie im Support-Ticket hier beschrieben: https://wordpress.org/support/topic/issue-with-currency-conversion-in-price-based-on-country-for-woocommerce/#post-18410019. Deshalb würde ich gerne WPML Multi Currency verwenden, da hier jedoch Geolocation und das Runden von Preisen in Euro nicht funktionieren, wäre es natürlich ideal, wenn diese beiden Funktionen trotzdem zur Verfügung stünden. Gibt es hier eventuell noch Möglichkeiten, etwas zu tun, oder soll ich das so hinnehmen? Aktuell würde ich in WPML die Option "Currencies based on 'Site Language'" aktivieren und auf der Produktseite jeweils einen Shortcode hinzufügen, sodass sich der Kunde seine gewünschte Währung bei Bedarf manuell selbst aussuchen kann. Wie ich die Funktion, Euro-Preise auf ganze Euros zu runden, mit WPML umsetzen kann, ist mir aber noch nicht klar. Vielen Dank für deine Unterstützung und deine Einschätzung. Viele Grüße, Patrick |
April 12, 2025 um 5:57 pm #16925583 | |
Andreas W. WPML-Unterstützer seit 12/2018 Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Zeitzone: America/Lima (GMT-05:00) |
Hallo, Die Geolocation von WCML sollte eigentlich wie erwartet funktionieren, wenn "Price Based on Country for WooCommerce" deaktiviert ist. Bitte teste dies nochmal und gib mir daraufhin Bescheid. Für das Runden von Preisen, könnten wird dann folgende Hook anwenden: Beispiel zum Abrunden auf die nächste volle Zahl: return $price; Diese Hook sollte in der Datei functions.php eines Child Themes integriert werden. Man könnte aber auch ein Code Snippets Plugin verwenden. Ich helfe Dir gerne dabei diese zu integrieren, falls notwendig. Mit freundlichen Grüßen |
April 13, 2025 um 6:34 pm #16926862 | |
patrickA-31 |
Hallo Andreas, vielen Dank für deine Rückmeldung und den Hook-Vorschlag! Ich habe den Code bereits via Snippet eingefügt – du findest ihn direkt unter folgendem Link: versteckter Link Allerdings wurde bei einer Testbestellung nach Schweden der Preis leider nicht gerundet, obwohl der Snippet aktiv ist. Die Währung ist auf "Client Location" eingestellt. Der Cache wurde über das Accelerator-Plugin geleert, und die Seite wurde auch in einem Inkognito-Fenster neu geladen. Dennoch wird der Currency Switcher aktuell nicht angezeigt. Du hast ja noch die Zugangsdaten zur Live-Seite – könntest du dich bitte einloggen und mal schauen, was da nicht stimmt? Vielen Dank schon mal für deine Hilfe! Beste Grüße |
April 15, 2025 um 11:56 am #16933900 | |
Andreas W. WPML-Unterstützer seit 12/2018 Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Zeitzone: America/Lima (GMT-05:00) |
Vielen Dank! Ich habe dies nun gestestet und erscheint als funktioniert der Filter "wcml_rounded_price" aktuell nicht wie erwartet. Ich werde dieses Problem intern an den Second Tier Support eskalieren und mich zurückmelden, sobald ich eine Rückmeldung erhalten habe. |
April 15, 2025 um 7:09 pm #16935944 | |
Andreas W. WPML-Unterstützer seit 12/2018 Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Zeitzone: America/Lima (GMT-05:00) |
Ich habe mir das Problem nun genauer angeschaut und die Hook scheint wie erwartet zu funktionieren. Diese Hook funktioniert allerdings nicht auf der Hauptwährung, sondern nur auf den Zweitwährungen. Um zum Beispiel jeden Preis mit einem Wert von xx,99 Cent anzuzeigen, muss folgende Hook angewendet werden: add_filter( 'wcml_rounded_price', 'wcmlhook_rounded_price', 10, 2 ); function wcmlhook_rounded_price( $price, $currency ) { if ( 'EUR' === $currency ) { // Round to the nearest whole number, then subtract 0.01 $price = round( $price ) - 0.01; } return $price; } Das funktioniert aber nur dann, wenn Euro nicht als Standardwährung in WooCommerce gesetzt ist, Um die Standardwährung in WooCommerce anzupassen, muss eine WooCommerce Hook verwendet werden: add_filter( 'woocommerce_product_get_price', 'custom_round_price_ending', 10, 2 ); function custom_round_price_ending( $price, $product ) { if ( get_woocommerce_currency() === 'USD' ) { $price = round( $price ) - 0.01; } return $price; } |
April 16, 2025 um 8:10 pm #16941130 | |
patrickA-31 |
Hallo Andreas, das hört sich toll an – danke für die ausführliche Erklärung! Muss ich die von dir genannten Hooks jeweils in ein separates Snippet einfügen, um sie zu aktivieren? Oder können beide auch in einem gemeinsamen Snippet zusammenlaufen? Vielen Dank nochmals für die tolle Unterstützung. Viele Grüße |
April 16, 2025 um 9:47 pm #16941334 | |
Andreas W. WPML-Unterstützer seit 12/2018 Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Zeitzone: America/Lima (GMT-05:00) |
Ja, das stellt bei meinem Test kein Problem dar, solange Du nicht in beiden Hooks die gleiche Currency verwendest. Wichtig ist, dass Du bei der Hook 'woocommerce_product_get_price' die Standardwährung verwendest, die in WooCommerce angegeben wurden. In der Hook 'wcml_rounded_price' kannst Du die Kondition für jede Zweitwährung setzen. |
April 17, 2025 um 8:18 am #16942535 | |
patrickA-31 |
Hallo Andreas, ich habe versucht, beide Hooks – sowohl gemeinsam als auch einzeln – in ein Snippet zu kopieren und zu aktivieren. Leider erhalte ich beim Aktivieren des Snippets folgende Fehlermeldung: "An error occurred when attempting to activate" In meinem Fall mit Euro als Standardwährung habe ich im zweiten Hook "USD" zu "EUR" geändert: add_filter( 'woocommerce_product_get_price', 'custom_round_price_ending', 10, 2 ); function custom_round_price_ending( $price, $product ) { Wenn nur dieser Hook alleine aktiviert wird, lässt sich das Snippet problemlos aktivieren. Bei einem kurzen Test mit Euro (z. B. für eine Sendung nach Österreich) wird mir allerdings weiterhin ein krummer Preis angezeigt. Ich habe den Cache noch einmal geleert und werde den Test morgen erneut durchführen. Vielen Dank im Voraus für deine Hilfe! Viele Grüße |
April 17, 2025 um 2:32 pm #16944583 | |
patrickA-31 |
Hallo Andreas, ich habe nun die erste Bestellung erhalten, bei der der folgende Hook aktiv war: add_filter( 'woocommerce_product_get_price', 'custom_round_price_ending', 10, 2 ); function custom_round_price_ending( $price, $product ) { Ergebnis: Siehe Screenshot im Anhang. In Deutschland kostet es mit 19 % MwSt 60,00 €. Im Beispiel (s. Screenshot) aus den Niederlanden wären es mit 21 % MwSt 61,20 €. Zusätzlich werden 6 Cent auf die Bundle-Produkte berechnet (Details siehe Screenshot). Ich vermute, dein Hook greift auf einen hinterlegten Preis zu, der normalerweise nicht mitberechnet wird. Vielen Dank im Voraus für deine Mühe! Viele Grüße und schöne Ostern |
April 21, 2025 um 10:09 pm #16952780 | |
patrickA-31 |
Hallo Andreas, ich wollte noch einmal auf die Preisberechnung zurückkommen. Es scheint, dass das aktuelle Rundungsverfahren zu gewissen Ungenauigkeiten führt. Daher frage ich mich, ob die Idee, die Preise pauschal auf volle Euro zu runden, tatsächlich die beste Lösung ist. Eine Alternative, die mir vorschwebt, wäre, den Bruttopreis in Euro mit 19 % MwSt als Basis festzulegen und diesen finalen Bruttopreis in allen EU-Ländern mit Euro einheitlich anzubieten – beispielsweise ein Produkt für 49,99 € brutto, unabhängig vom jeweiligen nationalen Steuersatz, z. B. für den Versand nach Deutschland, Österreich, Frankreich etc. So ähnlich, wie es auch mit dem Plugin „Price Based on Country for WooCommerce“ funktioniert hat. Ein zusätzlicher Vorteil dieser Lösung wäre, dass der Preis für Sendungen in Drittländer wie die Schweiz nicht automatisch um 19 % MwSt reduziert wird, wie es aktuell der Fall ist. Da ich unter 100.000 € Umsatz in die Schweiz bleibe, muss ich dort keine MwSt abführen – entsprechend bliebe der Preis dort konstant (was in diesem Fall mehr Netto-Gewinn bedeutet). Was denkst du darüber? Könnte das aus deiner Sicht eine stabilere und sauberere Lösung darstellen? Ich bin gespannt auf deine Meinung und freue mich auf dein Feedback. Vielen Dank im Voraus für deine Unterstützung! Viele Grüße |
April 23, 2025 um 2:32 am #16957700 | |
Andreas W. WPML-Unterstützer seit 12/2018 Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Zeitzone: America/Lima (GMT-05:00) |
Das Runden der Währung, die in WooCommerce als Standardwährung angelegt wird, muss in dem Fall über eine WooCommerce-Hook stattfinden. Ich rate dazu hierzu den WooCommerce-Support zu konsultieren, da meine empfohlene Methode auf Deiner Website anscheinend nicht wie erwartet funktioniert. Das ist hier auch dann der Fall, wenn ich WPML und WCML kurz deaktiviere. |
April 24, 2025 um 8:53 pm #16966325 | |
patrickA-31 |
Hallo Andreas, vielen Dank für Deine Nachricht. WooCommerce selbst empfiehlt in Fällen wie diesem den Einsatz von Plugins wie "Price Based on Country", mit denen sich Preise je nach Land bzw. Währung korrekt und rund anzeigen lassen. Das kommt für mich allerdings nicht in Frage, da es mit anderen Plugins, die ich verwende, nicht kompatibel ist. Ich habe deshalb als Basiswährung CHF gewählt und die Preise in Euro mit Rundung auf ganze Beträge umrechnen lassen. Tatsächlich scheint das auf der Produktseite bei Bundle-Produkten auch korrekt zu funktionieren – dort werden runde Europreise angezeigt. Das Problem mit den krummen Zahlen tritt jedoch weiterhin auf: - Bei Einzelprodukten bereits auf der Produktseite. - Zudem werden alle Produkte als „im Angebot“ angezeigt, obwohl der Preis nur um 0,01 € reduziert wurde. Ich vermute, dass dieses Verhalten auch auf die Bundle-Produkte übergeht, die aus dem genannten Einzelprodukt bestehen. An der Kasse, wo die Preise – auch bei Bundle-Produkten – wieder krumm dargestellt werden. (S. Screenshot anbei) Ich könnte mir vorstellen, dass der Rabatt von 0,01 € eventuell noch von Deinem früheren Hook stammt. Allerdings habe ich das Snippet bereits deaktiviert und gelöscht sowie den Cache geleert – eigentlich sollte dieser Hook also keinen Einfluss mehr haben. Hast Du eventuell noch eine Idee, woran das liegen könnte? Über Deine Unterstützung würde ich mich sehr freuen! Liebe Grüße |
April 25, 2025 um 3:42 pm #16969369 | |
Andreas W. WPML-Unterstützer seit 12/2018 Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Zeitzone: America/Lima (GMT-05:00) |
Ich hatte in der functions.php das Snippet für die Standard-Währung auf EUR angelegt, da diese zuvor auf EUR stand. Wenn nun aber CHF angewendet wird, dann wird dieses Snippet möglicherwiese zu Problemen führen. Ich habe es nun entfernt. Bitte teste die Preisdarstellung nun erneut. Zum Switcher: Das duplizieren des originalen Produkte, erneutes Editieren und erneutes Übersetzen löste das Problem damals. Ich vermute allerdings, dass die eigentliche Ursache die "Emojis" sind, die im Inhalt verwendet werden. Ich würde dazu raten diese zu entfernen. |
April 28, 2025 um 12:46 pm #16974873 | |
patrickA-31 |
Hallo Andreas, vielen Dank für Deine Anpassungen und Deine Nachricht. Ich habe die Preisdarstellung in einem kurzen Testvideo (Zum Video: versteckter Link ) überprüft. Dabei ist mir Folgendes aufgefallen: Der Euro-Preis mit deutscher Mehrwertsteuer (19 %) wird nun korrekt gerundet angezeigt. Allerdings wird bei anderen Versandländern wie z. B. Österreich der finale Preis nicht gerundet, sodass der Kunde dort weiterhin einen krummen Betrag bezahlen muss. Auch bei anderen Währungen und Ländern funktioniert die Rundungsfunktion nicht korrekt. In der Customer History wird die ausländische Währung nicht korrekt umgerechnet, sondern 1:1 mit CHF gleichgesetzt, was natürlich nicht stimmen kann. Außerdem ist mir aufgefallen, dass ich bei neuen Bestellungen kein Produkt hinzufügen und dessen Preis auf null setzen kann. Bitte gib mir Bescheid, wie wir hier am besten weiter vorgehen sollen. Viele Grüße |
April 30, 2025 um 2:16 am #16981509 | |
Andreas W. WPML-Unterstützer seit 12/2018 Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Zeitzone: America/Lima (GMT-05:00) |
Um in anderen Währungen zu runden, muss die WCML Hook angewendet werden und Du musst dabei eine Kondition pro Währung setzen. Beispiel: add_filter( 'wcml_rounded_price', 'wcmlhook_rounded_price', 10, 2 ); function wcmlhook_rounded_price( $price, $currency ) { // List of currencies to apply the rounding rule $target_currencies = array( 'EUR', // Bulgaria, Germany, Austria, etc. 'DKK', // Denmark 'PLN', // Poland 'CZK', // Czech Republic 'RON', // Romania 'SEK', // Sweden 'GBP', // United Kingdom (UK) 'NOK', // Norway 'HUF', // Hungary 'USD' // United States (US) ); if ( in_array( $currency, $target_currencies, true ) ) { // Round to the nearest whole number, then subtract 0.01 $price = round( $price ) - 0.01; } return $price; } Wie sieht Dein Snippet aktuell aus? Ich sehe in dem Code Snippet Plugin oder der functions.php des Child Themes aktuell kein aktives Snippet dieser Art. |
Das Thema „[Geschlossen] Fixe Produktpreise in Euro unabhängig vom Versandland – Lösung mit WPML?“ ist für neue Antworten geschlossen.