Hinweis
Dieser Artikel thematisiert Anpassungen am Produktimport / Preisabgleich und richtet sich primär an Entwickler oder erfahrene WordPress Benutzer mit grundlegenden Programmierkenntnissen.
Vorgehen
Ab Version 2.11.0 des WooCommerce Bexio Automator Plugins stehen sowohl beim Import, als auch beim Preisabgleich, Filter zur Verfügung, um Änderungen an den Daten vorzunehmen. Zusammen mit der Anpassung im Plugin-Dienst vom 13.01.2026, damit auch der Name der jeweiligen Währung mitgeschickt wird, erlaubt dies, bei Bedarf eine Währungsumrechnung vorzunehmen.
Dazu gibt es grundsätzlich 2 mögliche Vorgehensweisen.
Die Umrechnungsfaktoren werden in einem fixen Mapping hinterlegt. Dies kann z.B. direkt im Code, oder in einer Bearbeitungsmaske im Shop, inkl. Speicherung in der Datenbank, erfolgen. Dies ist im Detail dem Anwender überlassen.
Das Prinzip bleibt jedoch das gleiche: die Umrechnungsfaktoren werden fix hinterlegt und periodisch von Hand aktualisiert.
Die Umrechnungsfaktoren werden extern von einem entsprechenden Dienst (z.B. via API) abgefragt. Welcher Dienst hierzu verwendet wird, ist im Detail dem Anwender überlassen. Zu beachten: je nach Dienst und benötigtem Volumen, sowie Art der Implementation, können wiederkehrende Kosten für solche Dienste anfallen.
Das Prinzip bleibt jedoch das gleiche: für jede Währung wird der zu verwendende Umrechnungsfaktor extern abgefragt.
Die Umrechnungsfaktoren können dann verwendet werden, um über die Filter im Plugin den von Bexio ausgelesenen Preis, je nach Währung, zu überschreiben.
Beispiel
Anbei ist ein Beispiel, wie eine Währungsumrechnung beim Import vorgenommen werden könnte. Das Beispiel verwendet die bestehenden Filter für Produktimport & Preisabgleich (hier beschrieben) und geht von einer Einfügung im functions.php eines aktiven Child-Themes aus. Das Beispiel geht davon aus, dass die abweichenden Währungen in CHF konvertiert werden.
Hinweis: für die beiden Filter bei der Erstellung neuer / Aktualisierung bestehender Produkte während dem Import, kann der gleiche Callback verwendet werden - die notwendige Logik sowie die erhaltenen Parameter sind gleich.
$conversions = [
'EUR' => 0.93,
'GBP' => 1.08
];
add_filter('raptus_wc_bexio_connector_synced_bexio_price', 'currency_conversion', 10, 3);
function currency_conversion($price, $currency, $wc_product) {
global $conversions;
if ($currency != 'CHF' && array_key_exists($currency, $conversions)) {
$price = $price * $conversions[$currency];
}
return $price;
}
add_filter('raptus_wc_bexio_connector_import_product_before_save', 'currency_conversion_import', 10, 2);
add_filter('raptus_wc_bexio_connector_create_product_before_save', 'currency_conversion_import', 10, 2);
function currency_conversion_import($wc_product, $product) {
$currency = $product['currency'];
global $conversions;
if ($currency != 'CHF' && array_key_exists($currency, $conversions)) {
$wc_product->set_regular_price($product['sale_price'] * $conversions[$currency]);
}
return $wc_product;
}
Bei Bedarf könnte auch im Shop in unterschiedliche Währungen umgerechnet werden - das WC-Product Objekt wird im Filter jeweils übergeben. Dies ist im Detail der Implementation des Anwenders überlassen.
Kommentare
0 Kommentare