/** * Extract from support article https://aelia.freshdesk.com/solution/articles/3000010676 * * Example 6 - Forcing checkout in a specific currency * If you wish to allow customers to browse the site in a currency of their choice, * but force them to complete the checkout in a specific currency, the following code * shows an example of how you can do that. * * Need help customising the code for your need? Hire us on Codeable: http://bit.ly/codeable_aelia */ /** * Adds parameters to the Ajax request used to refresh the minicart. The additional * parameters will be used to determine the context in which the request was made, * so that we can know if we should force the currency because we are on the * checkout page. * * @param array params An array of parameters. * @return array */ add_filter('wc_cart_fragments_params', function($params) { if(is_checkout()) { if(strpos($params['wc_ajax_url'], '?') > 0) { $params['wc_ajax_url'] .= '&'; } else { $params['wc_ajax_url'] .= '?'; } // Add a parameter to the Ajax request, to keep track that it was triggered // on the checkout page $params['wc_ajax_url'] .= 'aelia_context=checkout'; } return $params; }); /** * Determines if we are processing an Ajax request triggered on the checkout page. * * @return bool */ function aelia_is_checkout_ajax_request() { if(defined('DOING_AJAX')) { // The "update_order_review" request updates the totals on the checkout // page if($_REQUEST['wc-ajax'] === 'update_order_review') { return true; } // The "get_refreshed_fragments" updates the minicart. We only need to take // it into account if we are on the checkout page if(($_REQUEST['wc-ajax'] === 'get_refreshed_fragments') && ($_REQUEST['aelia_context'] === 'checkout')) { return true; } } return false; } /** * Forces the checkout currency to USD. * * @param string selected_currency The currency selected originally. * @return string */ add_filter('wc_aelia_cs_selected_currency', function($selected_currency) { // If we are on the checkout page, or handling an Ajax request from that page, // force the currency to USD if(is_checkout() || is_checkout_ajax_request()) { $selected_currency = 'USD'; } return $selected_currency; }, 50);