Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Aelia Currency Switcher - Filtering products with dynamic multi-currency pricing.
- * The following code improves the accuracy of the price filtering widget, by matching the minimum
- * and maximum price against the product prices in the active currency.
- *
- * IMPORTANT
- * For an accurate filtering, the product prices have to be calculated on the fly, as they depend
- * on factors such as the exchange rates at the moment of filtering. This means that the filtering
- * logic can be significantly heavier and, consequently, slower. We recommend that you test this
- * code on a staging copy of your site, and optimise it for your own specific setup, before using
- * it on a production site.
- *
- * 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
- */
- add_filter('loop_shop_post_in', function($product_ids) {
- $max_price = $_GET['max_price'];
- $min_price = $_GET['min_price'];
- // Eventually, alter the parameters to exclude products that would be hidden
- // regardless of the price, e.g. hidden products, out of stock products, etc.
- $posts = get_posts(array(
- 'post_type' => 'product'
- ));
- foreach($posts as $entry) {
- // Skip any product that might already be in the list
- if(in_array($entry->ID, $product_ids)) {
- continue;
- }
- $product = wc_get_product($entry);
- // Get the price on the fly. This will return the price in the active currency,
- // converted automatically if needed
- $product_price = $product->get_price();
- if($product_price >= $min_price && product_price <= $max_price) {
- $product_ids[] = $entry->ID;
- }
- }
- return $product_ids;
- }, 10, 1);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement