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 30, 2025 um 12:40 pm #16983877 | |
patrickA-31 |
Hallo Andreas, vielen Dank für deine Nachricht. Ich habe deinen Hook als Snippet hinzugefügt – vorher war tatsächlich alles wieder deaktiviert. Soweit ich es erkennen kann, funktioniert der Hook aktuell für Lieferadressen nach Deutschland sowie für Bundle-Produkte (also Produkte, die aus mehreren Einzelprodukten bestehen). Bei Lieferungen z. B. nach Österreich (wo ein anderer MwSt.-Satz greift) oder bei Einzelprodukten scheint das Runden allerdings nicht mehr korrekt zu funktionieren (siehe angehängten Screenshot). Ich frage mich ehrlich gesagt, warum das Runden überhaupt nochmal separat über einen Hook erfolgen muss – in WPML Multi Currency habe ich die Rundungsregeln ja eigentlich pro Währung schon hinterlegt. Sollte das nicht ausreichen? Außerdem habe ich in den Einstellungen die Lifting Charge auf 0 % gesetzt. Die Änderung scheint aber nicht übernommen zu werden. Ein Beispiel: Für 25 CHF sollte nach aktuellem Umrechnungskurs eigentlich 27 Euro angezeigt werden (aufgrund der Rundung). Tatsächlich wird das Produkt aber mit 28,23 Euro ausgegeben: Kannst du mir sagen, woran das liegt bzw. wie wir hier zu einer einheitlichen, sauberen Lösung kommen? Viele Grüße |
April 30, 2025 um 2:49 pm #16984614 | |
Andreas W. WPML-Unterstützer seit 12/2018 Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Zeitzone: America/Lima (GMT-05:00) |
Was diese Hook eigentlich tun sollte ist Folgendes: Bespiel: Originaler Preis: 23.34 round(23.34) → 23 23 - 0.01 → 22.99 Er sollte jeden Preis demnach je Ab- oder Aufrunden und einen Cent abziehen, so dass der Preis immer auf xx.99 endet. Das Problem ist dabei wohl, dass die vor dem Hinzurechnen des Steuersatzes geschieht. Die einzige Lösung wäre in dem Fall die Preise ohne MwST. anzuzeigen, doch das ist in der EU leider nicht erlaubt. Die einzige Lösung die ich dazu anbieten kann, ist das manuelle Anzeigen von einem Preis pro Währung auf jedem einzelnen Produkt. Siehe Screenshot. |
April 30, 2025 um 3:31 pm #16984824 | |
patrickA-31 |
Außerdem ist mir aufgefallen, dass mit deinem Hook auch -0,01 Euro vom kostenlosen Versand abgezogen werden. |
April 30, 2025 um 3:50 pm #16984860 | |
Andreas W. WPML-Unterstützer seit 12/2018 Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Zeitzone: America/Lima (GMT-05:00) |
Ja, in dem Fall wäre es: 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', 'DKK', 'PLN', 'CZK', 'RON', 'SEK', 'GBP', 'NOK', 'HUF', 'USD' ); if ( in_array( $currency, $target_currencies, true ) ) { $price = round( $price ); } return $price; } Darauf wird dann noch die Steuer angerechnet. |
April 30, 2025 um 4:01 pm #16984891 | |
patrickA-31 |
Ich habe den Preis dieses Produkts: versteckter Link Eigentlich bräuchten wir eine Lösung, wie sie auch mit dem Plugin WooCommerce Price Based on Country funktioniert: Dort kann man die jeweiligen Bruttopreise direkt eingeben, und diese bleiben dann unabhängig vom Versandland gleich. Leider ist dieses Plugin nicht mit WPML Multi Currency kompatibel. Falls jedoch eine Kompatibilität hergestellt werden könnte – oder WPML einen ähnlichen Mechanismus wie das genannte Plugin verwenden würde – ließe sich das Problem sauber lösen. |
April 30, 2025 um 4:35 pm #16984949 | |
Andreas W. WPML-Unterstützer seit 12/2018 Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Zeitzone: America/Lima (GMT-05:00) |
Wir haben dazu zwei Möglichkeiten: 1) Wir replizieren das Problem als Kompatibilitätsproblem zwischen "WooCommerce Price Based on Country" und "WooCommerce Multilingual & Multi-Currency". Da hier allerdings bereits von Seiten "WooCommerce Price Based on Country" darum gebeten wird unser Add-on auszuschalten, ist es sehr wahrscheinlich, dass man dort aktuell keinen Plan dazu hat das Plugin mit WCML kompatible zu machen. Beide Plugins nutzen die gleiche API zum Festlegen der Preise und das führt zu einem Konflikt, der sehr nur sehr unwahrscheinlich ohne gegenseitige Kooperation lösen lässt. Da der Hersteller bereits angibt nicht mit WCML kompatible zu sein, scheint dieser Lösungsversuch keinen Sinn zu ergeben. 2) Ich stelle einen Feature Request zu WCML, damit man einen gleichartigen Funktionsumfang in unserem Add-on integriert. Ob es dazu kommen würde hängt allerdings damit zusammen, wie viele Kunden ein solches Feature wünschen würden. Bis so ein Feature dann auch realisierbar gemacht werden kann, könnte sehr viel Zeit vergehen. |
Mai 1, 2025 um 10:04 am #16986302 | |
patrickA-31 |
Hallo Andreas, vielen Dank für deine ausführliche Rückmeldung und die beiden vorgeschlagenen Optionen. Ich habe inzwischen den Support von "Price Based on Country" kontaktiert (Link zur Anfrage) und hoffe sehr, dass wir dort eine positive Rückmeldung und idealerweise auch Bereitschaft zur Zusammenarbeit erhalten. Eine offizielle Kompatibilität wäre natürlich die beste Lösung. Sollte sich dieser Weg nicht realisieren lassen, würde ich es sehr begrüßen, wenn ihr seitens WCML an einer eigenen Erweiterung arbeitet, die ähnliche Funktionen bietet – insbesondere die Möglichkeit, Bruttopreise pro Land und/oder Währung automatisiert umzurechnen und zu runden. Das wäre für unsere Anforderungen ideal. Vielen Dank für deine Unterstützung und dafür, dass du das Thema weiterverfolgst! Mit freundlichen Grüßen |
Mai 2, 2025 um 7:10 pm #16990600 | |
Andreas W. WPML-Unterstützer seit 12/2018 Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Zeitzone: America/Lima (GMT-05:00) |
Zum Problem der Geolocation zwischen Plugins (z. B. WooCommerce Price Based on Country und WCML): Sowohl WooCommerce Price Based on Country als auch WCML greifen intern auf die Geolocation von WooCommerce (MaxMind API) zu, um den Standort des Kunden zu ermitteln. Daher kann es bei gleichzeitiger Nutzung beider Plugins zu Konflikten kommen, wie z. B.: - falsche oder inkonsistente Preise - falsche oder fehlende Mehrwertsteuerberechnung - fehlerhafte oder „verklemmte“ Sessions - Caching-Probleme (v. a. auf der Startseite/Shopseite) Lösungsvorschlag: Ich möchte an dieser Stelle nochmals betonen, dass man mit WPML und WCML Preise pro Währung und Produkt manuell festlegen kann. Dabei gilt: Ob die Preise inklusive oder exklusive MwSt. angezeigt werden, wird durch die grundlegende Einstellung in WooCommerce bestimmt. Wenn du die Preise exklusive Steuer eingibst, wird die jeweils gültige MwSt. automatisch addiert – so kannst du für alle Länder einen einheitlichen Nettopreis anzeigen. Zum Feature-Request: Bitte gib genau an, welches Verhalten du dir von WCML erwartest, damit wir dein Anliegen besser verstehen und ggf. an das Entwicklungsteam weitergeben können. Denn aktuell ist mir nicht ganz klar, was du genau möchtest. "also immer brutto zum Beispiel 50,00 Euro, egal ob in Deutschland mit 19% MwSt. oder in Schweden mit 25% MwSt." Das bedeutet in der Praxis: In Deutschland (19 %): 50,00 € brutto → 42,02 € netto In Schweden (25 %): 50,00 € brutto → 40,00 € netto Das heißt: Du erhältst unterschiedliche Nettoerlöse je nach MwSt.-Satz, weil der Bruttopreis fest ist und die Steuer davon abgezogen wird. Wenn das so gewünscht ist, ist das technisch machbar – aber es ist wichtig zu verstehen, dass das nicht über WCML gesteuert wird. WCML arbeitet währungsbasiert, nicht länderbasiert. Rechtlicher Hinweis: Du hast geschrieben: „unabhängig vom Lieferland“ In der EU muss bei Verkäufen an Endkunden die MwSt. immer nach dem Lieferland berechnet werden (OSS-Regelung). |
Mai 4, 2025 um 9:32 pm #16993936 | |
patrickA-31 |
Hallo Andreas, vielen Dank für die ausführliche Erläuterung und den Hinweis zur Geolocation-Problematik. Mir würde es bereits ausreichen, wenn die Rundung nach dem Hinzufügen der Steuer erfolgt – also am Ende der Preisberechnung. Wichtig wäre außerdem, dass sich auch der Preis in der Basiswährung (in meinem Fall Euro) nach Steuer gerundet darstellen lässt. Ideal wäre, wenn dieser gerundete Bruttopreis bereits angezeigt würde, bevor der Kunde seine Adresse eingibt. Vom Support von Price Based on Country habe ich inzwischen erfahren, dass die PRO-Version mit dem WooCommerce Product Bundles Plugin kompatibel ist. Ich habe mir deshalb die PRO-Variante gekauft und teste sie derzeit. Aus diesem Grund musste ich WPML Multi Currency deaktivieren, auch wenn ich ehrlich gesagt lieber die Preise mit WPML Multi Currency definieren würde. Falls sich das gewünschte Verhalten künftig besser in WCML abbilden ließe, würde ich mich über eine entsprechende Entwicklung sehr freuen. Vielen Dank und beste Grüße |
Mai 7, 2025 um 3:06 am #17004094 | |
Andreas W. WPML-Unterstützer seit 12/2018 Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Zeitzone: America/Lima (GMT-05:00) |
Hier siehst Du ein Test-Produkt: Es hat ein Produkt mit dem Preis $9.51. Ich habe zudem die Rundungsregeln von zuvor implementiert: Standard-Währung USD: 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; } Für EURO In WCML: 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; } So kostet das Produkt nun in USD 9.99 und in USD nach Umrechnung und Rundung 7.99€ in EURO. Die Preise werden inklusive Steuer angezeigt. Der Shop existiert in Englisch und Deutsch und die Preise sind auf beiden Produkten in beiden Sprachen gleich. Das ändert sich erst an der Kasse, weil dort die Lieferadresse und ggfls. Liefrkosten hinzukommen. Hier das Produkt: Wechel bitte die Sprache und testen den Währungsumschalter. --- Was genau wird nun hier von Dir erwartet? Anmeldung zur Test Site: |
Mai 9, 2025 um 6:10 am #17014590 | |
patrickA-31 |
Hallo Andreas, vielen Dank für die Zusendung deines Codes sowie den Zugang zur Testumgebung. Ich habe den Code zur Rundung der Preise auf meiner Website zum Testen implementiert und entsprechend angepasst – die Standardwährung ist bei mir Euro, und die Rundungsregel habe ich für CHF angepasst. Details zur Implementierung und Test findest du in folgendem Video: versteckter Link Aktuell bestehen jedoch zwei Probleme: Kombination mit WooCommerce Product Bundles: Kompatibilität mit WPML Multi Currency bei Bestellerstellung im Backend: Ich bitte dich, diese beiden Bugs zu prüfen und zu beheben. Lass mich wissen, falls du weitere Informationen oder Zugang benötigst. Beste Grüße |
Mai 9, 2025 um 2:59 pm #17017204 | |
Andreas W. WPML-Unterstützer seit 12/2018 Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Zeitzone: America/Lima (GMT-05:00) |
Beachte bitte, dass wir immer nur ein Thema pro Ticket behandeln können. Solltest Du ein Problem beim Erstellen von Bestellungen haben, dann öffne dazu bitte ein neues Ticket, es sei denn das Problem hängt mit dem empfohlenen Workaround zusammen. --- Zu WooCommerce Product Bundles: Handelt es sich hierbei um folgendes Plugin? Versuche das Problem bitte auf der Test Site zu replizieren, damit ich Dir weiterhelfen kann. --- Der empfohlene Workaround löst das bestehende Problem bereits für einfache und variable Produkte und eine interne Eskalation, bzw. Feature Request ist dadurch nicht mehr notwendig. Sehe ich das korrekt? |
Mai 9, 2025 um 3:41 pm #17017266 | |
patrickA-31 |
Bei dem Plugin handelt es sich um „WPC Product Bundles for WooCommerce“. Mit dem oben genannten Plugin habe ich ein Bundle-Produkt angelegt: sowie ein Einzelprodukt: In den Einstellungen unter WooCommerce > Tax > Prices entered with tax habe ich „Yes, I will enter prices inclusive of tax“ aktiviert. Unter WooCommerce > General habe ich Deutschland als Ursprungs- und Versandland hinterlegt. Aktuell bin ich mir unsicher, wie ich den Fehler in der Darstellung genau reproduzieren kann. Zum bestehenden Problem: Zum Thema Fremdwährungen: |
Mai 9, 2025 um 4:17 pm #17017404 | |
Andreas W. WPML-Unterstützer seit 12/2018 Sprachen: Englisch (English ) Spanisch (Español ) Deutsch (Deutsch ) Zeitzone: America/Lima (GMT-05:00) |
Die Test Site stand auf: "Yes, I will enter prices inclusive of tax" Dies bedeutet, dass die Steuer bereits im Preis enthalten ist. Stelle ich um auf: "No, I will enter prices exclusive of tax" Dann wird die Steuer auf den Preis aufgerechnet. Bei der aktuellen Hook siehst das so aus: Beispiel: Preis netto: 9.51 Wenn ich die WC Hook wie folgt anpasse und anstatt dessen 'get_prices_include_tax' verwende, scheint es zu funktionieren: add_filter( 'get_prices_include_tax', 'custom_round_price_ending', 10, 2 ); function custom_round_price_ending( $price, $product ) { if ( get_woocommerce_currency() === 'EUR' ) { $price = round( $price ) - 0.01; } return $price; } Das bedeutet, Du erwartest nun dass WCML eine gleichartige Hook bereitstellt, die Preise rundet, wenn der Preis ohne MwSt angegeben aber inkl. MwSt. angezeigt wird. Verstehe ich das richtig? |
Mai 11, 2025 um 3:25 pm #17020369 | |
patrickA-31 |
Die Preise der Produkte beinhalten tatsächlich die Mehrwertsteuer. Ich habe die Einstellung wieder auf Des Weiteren habe ich unter WooCommerce > Settings > Tax > Standard rates die Mehrwertsteuersätze als CSV-Datei hochgeladen, die ich auch in meinem Shop verwende. Wenn ich nun jedoch zum Checkout gehe und als Adresse Deutschland angebe, wird bei einer Summe von 100 Euro ein Mehrwertsteuerbetrag von 15,97 Euro angezeigt – nicht wie erwartet 19 Euro. Zu deinem Beispiel: Beim Umrechnen in Schweizer Franken (CHF) erfolgt eine Rundung auf 9,99 CHF. |
Das Thema „[Geschlossen] Fixe Produktpreise in Euro unabhängig vom Versandland – Lösung mit WPML?“ ist für neue Antworten geschlossen.