web-dev-qa-db-fra.com

Comment changer de devise par programme lors de la création d'une action d'ordre?

Une passerelle de paiement que j'utilise n'attend que la monnaie croate. J'essaie donc de mettre à jour le total du panier et sa monnaie en utilisant un filtre lors de la commande si la devise est l'euro. J'ai réussi à changer le total du panier, mais je ne peux pas changer de devise. Comment puis-je le faire dans l'action suivante?

// Set currency
function change_existing_currency() {
    return 'HRK';
}

function change_total_on_checking($order) {

     // Get order total
    $total = $order->get_total();

     // Change cart total on creating order
    if(get_woocommerce_currency() === 'EUR') {

        // Change currency somewhere here - currently this doesn't work
        add_filter('woocommerce_currency', 'change_existing_currency', 999, 2);

        // Set new cart total
        $new_total = $total * get_currency_rate(); 
        $order->set_total($new_total);

    }

}
add_action( 'woocommerce_checkout_create_order', 'change_total_on_checking', 999, 1 );
1
Ivan Topić
2
Ivan Topić