Ich habe in einem Projekt Polylang zur Übersetzung und WooCOmmerce als Shopsystem genutzt. In diesem Projekt konnte ich jedoch die Warenkorb, Kasse und die Danke-Seite nach dem Einkauf nicht übersetzen, weil im Backend nur ein Beitrag ausgewählt werden konnte.
Die Lösung
Ich habe mir angeschaut, wo WooCommerce die ID’s der Warenkorb-Seite etc speichert und gefunden, dass diese als Option gespeichert werden.
Der Wert dieser Option wird bei jedem Kauf und bei jeder Weiterleitung zu den genannten Seiten abgerufen. Ich musste also nur einen Filter hinzufügen, welches die geholte Seiten-ID manipuliert.
Wir haben folgende Seiten-ID’s:
- woocommerce_checkout_page_id
- woocommerce_cart_page_id
- woocommerce_terms_page_id
Falls euch diese nicht bekannt sind, könnt ihr euch im Backend einloggen und unter Seiten schauen. Dort sind die Warenkorb, Kasse und AGB- Seiten. Wenn ihr diese zum bearbeiten öffnet, bekommt ihr eine URL wie /post.php?post=8781&action=edit in diesem Falle wäre z.B. die Seiten-ID 8781.
So könnt ihr die genannten Seiten durchgehen und euch die ID’s merken. Anschließend fügt ihr folgenden Code in eure functions.php ein:
add_filter('pre_option_woocommerce_checkout_page_id', function() {
return pll_get_post(XXXX , $_COOKIE['pll_language'] );
});
add_filter('pre_option_woocommerce_cart_page_id', function() {
return pll_get_post(XXXX , $_COOKIE['pll_language'] );
});
add_filter('pre_option_woocommerce_terms_page_id', function() {
return pll_get_post(XXXX , $_COOKIE['pll_language'] );
});
Sobald ihr das gemacht habt und die Übersetzungen eingepflegt sind, müssten sich die übersetzten Seiten aufrufen. Ich hoffe mit diesem Beitrag euch geholfen zu haben.