web-dev-qa-db-ja.com

注文アクションの作成時にプログラムで通貨を変更する方法

私が使用している支払いゲートウェイは、クロアチアの通貨のみを期待しているので、通貨がユーロの場合、注文のフィルターを使ってカートの合計とその通貨を更新しようとしています。カートの合計数を変更できましたが、通貨を変更できません。次の行動の中でどうすればいいの?

// 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ć

私はついに解決策を見つけました https://hotexamples.com/examples/-/WC_Order/set_currency/php-wc_order-set_currency-method-examples.html

$order->set_currency('HRK');
2
Ivan Topić