Last active
February 3, 2021 13:41
-
-
Save kalbac/1e04876fec4a074234c66f399e88b5e6 to your computer and use it in GitHub Desktop.
Конвертация стоимости доставки Woocommerce в нужную валюту (из рублей в доллары)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?php | |
| /* | |
| * Сниппет предназначен для конвертации стоимости валюты . | |
| * По вопросам обращайтесь на емайл [email protected] или через контактную форму https://woodev.ru/support | |
| * Нижеприведённый код необходимо вставить в файл functions.php вашей активной темы. | |
| * Автор кода не несёт отвественности в случае возникновеня каких либо проблем при использовании данного кода. | |
| * Любые изменения которые вы вносите в код вашего сайта, вы делаете это на свой страх и риск. | |
| * Код представлен для ознакомления как есть. Вы должны понимать что с этим кодом нужно делать. Если нет то обатитесь к профессионалам. | |
| */ | |
| add_filter( 'woocommerce_shipping_method_add_rate_args', 'my_custom_currency_shipping_method_rate_cost' ); | |
| function my_custom_currency_shipping_method_rate_cost( $args ) { | |
| /* | |
| * Условие: Если стоимость доставки больше нуля и текущая валюта магазина рубли то выполняем действие. | |
| * Примечание: для получения текущей валюты магазина используется функция get_woocommerce_currency(), | |
| * если у вас установлен какой то плагин который меняет значение валюты, то вам возможно нужно будет использовать другую функцию. | |
| */ | |
| $currency_current = get_woocommerce_currency(); //Код текущей валюты магазина. | |
| $shipping_method_id = 'wc_russian_post'; //Нужный метод доставки | |
| if( false !== mb_strpos( $args['id'], 'wc_russian_post' ) && $args['cost'] > 0 && ! in_array( $currency_current, array( 'RUB', 'RUR' ), true ) ) { | |
| $current_rate = my_custom_get_actual_currency_rate( 'RUB', $currency_current ); | |
| if( $current_rate > 0 ) { | |
| $args['cost'] = round( $args['cost'] * $current_rate, 2 ); | |
| } | |
| } | |
| return $args; | |
| } | |
| /* | |
| * Функция получает актуальную цену валюты на текущий момент | |
| * Данные берутся с сервиса https://exchangeratesapi.io/ | |
| */ | |
| function my_custom_get_actual_currency_rate( $from = 'RUB', $to = 'USD' ) { | |
| $rate = 0; | |
| $url = add_query_arg( array( 'base' => $from, 'symbols' => $to ), 'https://api.exchangeratesapi.io/latest' ); | |
| $response = wp_remote_get( $url ); | |
| if ( ! is_wp_error( $response ) && wp_remote_retrieve_response_code( $response ) === 200 ){ | |
| $result = json_decode( wp_remote_retrieve_body( $response ), true ); | |
| if( isset( $result['rates'], $result['rates'][$to] ) ) { | |
| $rate = $result['rates'][$to]; | |
| } | |
| } | |
| return $rate; | |
| } | |
| ?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment