Как добавить конвертер валют в WordPress двумя способами

Сразу к делу: если нужен пересчет по курсу – либо используйте внешний виджет с iframe, либо пишите шорткод на PHP. Остальное – компромиссы. Все зависит от цели: отображение курса или интерактивный калькулятор?

Если важна скорость – подключайте внешний сервис. Например, курс с сайта ЦБ РФ через iframe, без нагрузки на сервер. Пример:

Но это не калькулятор. Это тупо встраивание. Хотите расчеты в реальном времени – придется лезть в код. Используйте API и AJAX.

Вот минимальный PHP-шорткод с обращением к API:


function simple_currency_calc() {
$response = wp_remote_get(\'https://api.exchangerate-api.com/v4/latest/USD\');
if (is_wp_error($response)) return \'Ошибка получения курса\';
$data = json_decode(wp_remote_retrieve_body($response), true);
$rate = $data[\'rates\'][\'EUR\'];
return \'1 USD = \' . $rate . \' EUR\';
}
add_shortcode(\'курс\', \'simple_currency_calc\');

Вставьте [курс] в любую запись – получите живой курс. Но осторожно: частые обращения к API могут замедлить сайт. Используйте transient для кэширования:


function cached_currency_calc() {
$rate = get_transient(\'usd_to_eur\');
if (false === $rate) {
$response = wp_remote_get(\'https://api.exchangerate-api.com/v4/latest/USD\');
if (is_wp_error($response)) return \'Ошибка\';
$data = json_decode(wp_remote_retrieve_body($response), true);
$rate = $data[\'rates\'][\'EUR\'];
set_transient(\'usd_to_eur\', $rate, HOUR_IN_SECONDS);
}
return \'1 USD = \' . $rate . \' EUR\';
}
add_shortcode(\'курс_кеш\', \'cached_currency_calc\');

Важно: не кэшируйте данные больше, чем на час – иначе получите жалобы на устаревшие значения.

И последнее: не используйте плагины из топа, которые обещают все и сразу. Они ломают стили, тянут мегабайты JS и конфликтуют с редактором блоков.

Внимание! Любой внешний сервис может лечь. Обязательно добавляйте обработку ошибок, иначе блок страницы просто исчезнет.

Установка плагина конвертации валют через репозиторий WordPress

Рекомендуется использовать плагин Currency Switcher for WooCommerce от WP Wham. Он стабилен, поддерживается, совместим с большинством тем и активно обновляется. Для проектов без WooCommerce подойдет Currency Converter Widget.

Перейдите в админку. Раздел Плагины → Добавить новый. В поиске введите точное название. Никаких лишних кликов. Сразу кнопка Установить, затем Активировать.

Читайте также:  Полное руководство по использованию настройщика тем WordPress в пятой части сериала

Проблема с видимостью плагина? Возможно, фильтруется по региону. Попробуйте включить английский интерфейс. Или использовать slug напрямую:

https://wordpress.org/plugins/woocommerce-currency-switcher/

После активации – проверьте: появилось ли новое меню в левом сайдбаре? Нет? Перейдите в Настройки, найдите блок, связанный с валютой. Некоторые плагины скрываются в Инструментах.

Внимание: если сайт использует кэширование, новые валютные курсы могут не отображаться. Отключите кэш, настройте исключения или добавьте правило в functions.php:


add_filter(\'woocommerce_currency_switcher_disable_cache\', \'__return_true\');

Сомневаетесь в актуальности курсов? Плагин должен поддерживать API-источники: Fixer.io, Open Exchange Rates или ЦБ РФ. Без этого точность – миф.

Важно помнить:

Автообновление курсов должно быть настроено по расписанию cron. Без него значения останутся статичными, что опасно для коммерции.

[woocs]

Проверяйте работу в режиме инкогнито. Кэш может обманывать. А также смотрите, как ведет себя корзина. Иногда при смене валюты ломаются цены – особенно в нестандартных шаблонах WooCommerce.

Финальный тест: эмулируйте заказ. Переключите на другую денежную единицу. Оформите покупку. Проверьте, чтобы итоговая сумма была конвертирована не только визуально, но и в базе данных.

Нюанс: некоторые плагины не перехватывают API-запросы REST. В результате – цены в мобильных приложениях могут отображаться в исходной валюте. Это критично для магазинов с внешними интеграциями.

Встраивание HTML-виджета конвертера от стороннего сервиса вручную

Решение простое: используйте встроенный HTML-блок редактора и код от стороннего поставщика, такого как X-Rates, Exchangerate.host или TransferWise.

Скопируйте iframe-код, предоставляемый выбранным сервисом. Пример:


<iframe src=\"https://www.example.com/widget?from=USD&to=EUR\" width=\"300\" height=\"200\" frameborder=\"0\"></iframe>

Перейдите в режим редактирования страницы или записи. Вставьте код в блок HTML (не \»Текст\», не \»Визуальный\»). Не вставляйте код в редактор Gutenberg без HTML-блока – он сломается.

Внимание! Некоторые виджеты загружаются через JavaScript. Такие скрипты не работают в блоке HTML редактора без дополнительных настроек, например, использования Shortcode API или фильтра the_content.

Если используется классический редактор, переключитесь на вкладку \»Текст\», а не \»Визуально\». Вставляйте только проверенный код, без лишнего JavaScript. Лишний трафик – лишние проблемы.

Читайте также:  Как создать стильные галереи на WordPress с помощью плагина NextGEN Gallery

Не доверяйте iframe от малоизвестных источников. Они могут внедрять рекламу, куки и сторонние трекеры. Открывайте в режиме инспектора и проверяйте, что именно подгружается.

Если сервис не даёт iframe, а только JS, оберните его в шорткод:


function external_widget_shortcode() {
return \'<script src=\"https://external.com/widget.js\"></script>\';
}
add_shortcode(\'ext_widget\', \'external_widget_shortcode\');

Затем используйте [ext_widget] в нужном месте. Но будьте готовы – некоторые темы режут теги <script> без предупреждения. Проверяйте результат в режиме \»Инкогнито\».

Важно помнить: кэширование страниц может мешать обновлению данных внутри встроенного виджета. Не используйте кеш-виджеты для страниц с динамическими котировками.

Наконец: проверяйте адаптивность. Некоторые iframe жёстко заданы по ширине. Добавьте обёртку с CSS-классом, например:


<div style=\"max-width:100%;overflow:auto;\">
<iframe src=\"...\" width=\"300\" height=\"200\"></iframe>
</div>

Работает? Отлично. Не работает? Меняйте поставщика или внедряйте через API.

Настройка автоматического обновления курсов валют в плагине

Рекомендуется использовать API с поддержкой актуализации курсов по расписанию. Наиболее стабильный вариант – подключение через Open Exchange Rates или Currencylayer. Выбирайте поставщика с поддержкой JSON и минимальной задержкой обновления.

После установки плагина перейдите в настройки и найдите блок с параметрами обновления. Часто он скрыт или доступен только после активации API-ключа. Обратите внимание на поле «Интервал синхронизации». По умолчанию – 12 часов. Меняйте на 6, если источник не ограничивает количество запросов.

Если используется wp_cron, настройте пользовательское событие:


add_action(\'init\', function() {
if (!wp_next_scheduled(\'refresh_currency_rates\')) {
wp_schedule_event(time(), \'hourly\', \'refresh_currency_rates\');
}
});
add_action(\'refresh_currency_rates\', \'update_rates_from_api\');
function update_rates_from_api() {
// запрос к внешнему API и запись в базу
}

Без настроенного DISABLE_WP_CRON в wp-config.php задание сработает только при посещении сайта. Для гарантированной работы используйте cron-сервер:


0 * * * * wget -q -O - https://example.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Важно! Без внешнего cron или постоянного трафика обновление не будет работать стабильно. Не надейтесь на стандартный wp_cron в продакшене.

Убедитесь, что API возвращает данные корректно. Проверка через wp_remote_get() даст сигнал о возможных ошибках авторизации, лимитах, изменениях формата ответа. Пример:

Читайте также:  Лучшие практики именования медиа-файлов в WordPress для SEO и удобства управления контентом


$response = wp_remote_get(\'https://api.exchangeratesapi.io/latest?access_key=YOUR_KEY\');
if (is_wp_error($response)) {
error_log(\'Ошибка получения данных: \' . $response->get_error_message());
}

Проверьте, куда сохраняются курсы. Некоторые плагины пишут в options, другие – создают отдельную таблицу. Не путайте. Для отображения используется именно последний сохранённый курс – ошибка здесь ломает логику пересчёта.

Помните: частота обновлений должна соответствовать цели. Для отображения на витрине – достаточно одного раза в сутки. Для расчётов – минимум раз в час.

Некоторые расширения не очищают кэш после синхронизации. Ищите флажок flush cache after update. Нет его? Значит, посетители будут видеть устаревшие значения. Это баг. Решайте вручную – или через хук после обновления.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *