businessdad icon

WooCommerce Currency Switcher - Orders list by currency

businessdad | PRO | 12/31/17 03:21:56 PM UTC | 0 ⭐ | 942 👁️ | Never ⏰ | []
PHP |

2.04 KB

|

None

|

0 👍

/

0 👎

/**
 * Aelia Currency Switcher for WooCommerce - Filter the orders on the orders list
 * page, showing only the ones with specific currencies depending on users' role.
 *
 * 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/).
 * The code will run on the Orders List page, check the user's role, and only show
 * orders the specific currency associated to that role.
 *
 * 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('request', function($vars) {
  global $typenow, $wpdb;
 
  // Only alter the query on the Orders List page
  if($typenow == 'shop_order')  {
    // By default, don't filter orders
    $currency = '';
 
    // Check if the user can only see GBP orders
    if(current_user_can('see_only_gbp_orders')) {
      $currency = 'GBP';
    }
    // Check if the user can only see EUR orders
    if(current_user_can('see_only_eur_orders')) {
      $currency = 'EUR';
    }
 
    // Filter orders by currency
    if(!empty($currency)) {
      $vars['meta_query']['relation'] = 'AND';
      // Only show orders in the specific currency
      $vars['meta_query'] = array(
        array(
          'key'   => '_order_currency',
          'value' => $currency,
          'compare' => '=',
        ),
      );
    }
  }
  return $vars;
}, 15 );

Comments