Skip to content

Instantly share code, notes, and snippets.

@kalbac
Last active February 3, 2021 13:41
Show Gist options
  • Select an option

  • Save kalbac/1e04876fec4a074234c66f399e88b5e6 to your computer and use it in GitHub Desktop.

Select an option

Save kalbac/1e04876fec4a074234c66f399e88b5e6 to your computer and use it in GitHub Desktop.
Конвертация стоимости доставки Woocommerce в нужную валюту (из рублей в доллары)
<?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