businessdad icon

Currency Switcher - Get a product price in currency

businessdad | PRO | 12/20/17 07:06:17 PM UTC | 0 ⭐ | 1016 👁️ | Never ⏰ | []
PHP |

2.82 KB

|

None

|

0 👍

/

0 👎

/**
 * Aelia Currency Switcher for WooCommerce - Return the price of a product in
 * a specific currency.
 *
 * HOW TO USE THIS CODE
 * Add the code to the bottom of your theme's functions.php file (see https://www.skyverge.com/blog/add-custom-code-to-wordpress/).
 * After doing so, call function aelia_get_product_price_in_currency() to get
 * the product price in a specific currency.
 *
 * Examples
 * --------
 * In the following examples, "123" is a product ID. You can also pass an instance
 * of a product to the function.
 * - aelia_get_product_price_in_currency(123, 'EUR', 'incl'); // Get product price in EUR, inclusive of tax
 * - aelia_get_product_price_in_currency(123, 'EUR', 'excl'); // Get product price in EUR, exclusive of tax
 * - aelia_get_product_price_in_currency(123, 'USD', 'incl'); // Get product price in USD, inclusive of tax
 * - aelia_get_product_price_in_currency(123, 'USD', 'excl'); // Get product price in USD, exclusive of tax
 *
 * 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
 */
 
/**
 * Returns a product price, inclusive or exclusive of tax, in a specific currency.
 *
 * @param WC_Product product
 * @param string currency
 * @param incl_tax
 * @return float
 */
function aelia_get_product_price_in_currency($product, $currency, $incl_tax) {
  if(is_numeric($product)) {
    $product = wc_get_product($product);
  }
 
  // Create a dynamic function that will allow to set the currency on the fly
  $currency_override_func = function($selected_currency) use ($currency) {
    return $currency;
  };
 
  // Set the currency to the specified one
  add_filter('wc_aelia_cs_selected_currency', $currency_override_func, 10);
 
  // Get the price inclusive of exclusive of tax
  switch($incl_tax) {
    case 'incl':
      $price = wc_get_price_including_tax($product);
      break;
    case 'excl':
      $price = wc_get_price_excluding_tax($product);
      break;
    default:
      $price = $product->get_price();
  }
 
  // Remove the custom filter, to restore the original currency, before
  // returning the price
  remove_filter('wc_aelia_cs_selected_currency', $currency_override_func, 10);
  return $price;
}

Comments