Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Prices by Country - Use billing or shipping country from manual orders
- * The following code snippet takes the billing or shipping country from manual orders,
- * so that the prices for such country are taken when adding items to the order.
- *
- * IMPORTANT
- * For this code snippet to work, the order must have the billing and/or shipping address
- * entered and saved into the database. To do so, please enter the address(es), then
- * save the order before adding products to it.
- *
- * 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
- *
- */
- /**
- * During the creation of manual orders, this function replaces the active country used by the
- * Prices by Country plugin with the billing or shipping country from the order.
- *
- * @param string $country
- */
- add_filter('wc_aelia_pbc_customer_country', function($country) {
- // Intercept the "add order item" action. That's the action used to add products
- // to manual orders
- if(defined('DOING_AJAX') && isset($_REQUEST['action']) && isset($_REQUEST['order_id']) && ($_REQUEST['action'] === 'woocommerce_add_order_item')) {
- $order = wc_get_order($_REQUEST['order_id']);
- // Safeguard to prevent dealing with invalid orders
- if($order instanceof \WC_Order) {
- // Take the shipping country, if the Prices by Country plugin is configured to do so
- if(Aelia\WC\PricesByCountry\WC_Aelia_Prices_By_Country::settings()->customer_country_to_use() === 'shipping_country') {
- $order_country = $order->get_shipping_country();
- }
- // If the shipping country is empty, or the Prices by Country plugin is configured to use
- // the billing country, take that one instead
- if(empty($order_country) || (Aelia\WC\PricesByCountry\WC_Aelia_Prices_By_Country::settings()->customer_country_to_use() === 'billing_country')) {
- $order_country = $order->get_billing_country();
- }
- }
- }
- // Replace the active country with the order country, if set
- return !empty($order_country) ? $order_country : $country;
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement