/** * WooCommerce Checkout Addons - Convert addon prices using the Aelia Currency Switcher. * * HOW TO USE THIS CODE * Simply add the code to the bottom of your theme's functions.php file, and it * will run automatically. For more information: https://www.skyverge.com/blog/add-custom-code-to-wordpress/ * * GPL DISCLAIMER * Because this code program is free of charge, there is no warranty for it, to the extent permitted by applicable law. * Except when otherwise stated in writing the copyright holders and/or other parties provide the program "as is" * without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of * merchantability and fitness for a particular purpose. The entire risk as to the quality and performance of the program * is with you. should the program prove defective, you assume the cost of all necessary servicing, repair or correction. * * Need a consultation, or assistance to customise this code? Find us on Codeable: https://aelia.co/hire_us */ /** * Converts a price from a source to a target currency. * * @param double price The source price. * @param string to_currency The target currency. If empty, the active currency * will be taken. * @param string from_currency The source currency. If empty, WooCommerce base * currency will be taken. * @return double The price converted from source to destination currency. * @author Aelia * @link https://aelia.co */ function aelia_get_price_in_currency($price, $to_currency = null, $from_currency = null) { // If source currency is not specified, take the shop's base currency as a default if(empty($from_currency)) { $from_currency = get_option('woocommerce_currency'); } // If target currency is not specified, take the active currency as a default. // The Currency Switcher sets this currency automatically, based on the context. Other // plugins can also override it, based on their own custom criteria, by implementing // a filter for the "woocommerce_currency" hook. // // For example, a subscription plugin may decide that the active currency is the one // taken from a previous subscription, because it's processing a renewal, and such // renewal should keep the original prices, in the original currency. if(empty($to_currency)) { $to_currency = get_woocommerce_currency(); } // Call the currency conversion filter. Using a filter allows for loose coupling. If the // Aelia Currency Switcher is not installed, the filter call will return the original // amount, without any conversion being performed. Your plugin won't even need to know if // the multi-currency plugin is installed or active return apply_filters('wc_aelia_cs_convert', $price, $from_currency, $to_currency); } /** * Converts the price of a checkout addon to the active currency. * * @param float cost * @return float */ function aelia_convert_checkout_addon_cost($cost) { return aelia_get_price_in_currency($cost); } add_filter('wc_checkout_add_ons_add_on_get_cost', 'aelia_convert_checkout_addon_cost', 10, 1);