GeoIP WP Multilang self-updates
Плагин для автоматического определения языка сайта на основе геолокации пользователя для WP Multilang.
by Vitalii Karakushan · github.com/karakushan/geoip-wpmultilang · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/karakushan/geoip-wpmultilang/archive/refs/heads/main.zipShips its own WordPress updater (built-in updater), so new versions show up under Dashboard → Updates.
Плагин для автоматического определения языка сайта на основе геолокации пользователя для WP Multilang.
Описание
GeoIP WP Multilang добавляет возможность автоматического определения языка посетителей сайта на основе их географического местоположения. Плагин интегрируется с WP Multilang и использует базу данных MaxMind GeoLite2 для определения страны по IP-адресу.
Возможности
- Автоматическое определение языка на основе IP-адреса пользователя
- Интеграция с WP Multilang - работает как дополнение к существующему плагину
- Гибкая настройка соответствий стран и языков
- Автоматическое обновление базы данных GeoLite2 через MaxMind API
- Админ-панель для настройки и тестирования
- Режим тестирования для разработки на localhost с подменой IP
- Поддержка прокси/CDN - корректное определение реального IP
- Приоритетная система определения языка
Требования
- WordPress 5.0+
- PHP 7.4+
- Плагин WP Multilang (активный)
- Лицензионный ключ MaxMind (бесплатный)
Установка
- Скачайте плагин и поместите в директорию
/wp-content/plugins/geoip-wpmultilang/ - Активируйте плагин в админ-панели WordPress
- Убедитесь, что плагин WP Multilang активен
- Перейдите в "WP Multilang" → "GeoIP Settings"
- Получите бесплатный лицензионный ключ на MaxMind.com
- Введите ключ в настройках и скачайте базу данных
- Настройте соответствие стран и языков
- Включите GeoIP определение
Настройка
Основные настройки
- Включить GeoIP определение - активация/деактивация функции
- MaxMind License Key - ключ для скачивания обновлений базы данных
- Автоматическое обновление - автоматическое обновление базы по расписанию
- Частота обновления - еженедельно, ежемесячно или ежеквартально
Настройки тестирования
- Режим тестирования - включение/отключение использования тестового IP
- Тестовый IP адрес - IP адрес для подмены в режиме разработки
- Полезно для тестирования на localhost с реальными IP адресами
Соответствие стран и языков
Настройте какой язык будет выбираться для каждой страны:
Основные поддерживаемые страны:
🇺🇦 UA → uk (Украина → украинский)
Дополнительно доступны: ru, en
🇪🇸 ES → es (Испания → испанский)
Дополнительно доступны: ru, en
🇬🇧 GB → en (Великобритания → английский)
🇺🇸 US → en (США → английский)
Дополнительно доступен: ru
🇱🇹 LT → lt (Литва → литовский)
Дополнительно доступен: ru
🇱🇻 LV → lv (Латвия → латышский)
Дополнительно доступен: ru
🇪🇪 EE → et (Эстония → эстонский)
Дополнительно доступен: ru
Дополнительные страны:
🇷🇺 RU → ru (Россия → русский)
🇧🇾 BY → ru (Беларусь → русский)
🇰🇿 KZ → ru (Казахстан → русский)
🇩🇪 DE → de (Германия → немецкий)
🇫🇷 FR → fr (Франция → французский)
🇮🇹 IT → it (Италия → итальянский)
🇵🇱 PL → pl (Польша → польский)
🇨🇿 CZ → cs (Чехия → чешский)
Примечание: Для неизвестных стран по умолчанию используется английский язык (en).
Приоритет определения языка
- Язык из URL (если указан в адресе)
- Язык из cookie (сохраненный выбор пользователя)
- GeoIP определение (по IP-адресу) ⭐ Новое!
- Язык браузера (Accept-Language заголовок)
- Язык по умолчанию (из настроек WP Multilang)
Тестирование
Используйте страницу "WP Multilang" → "GeoIP Test" для:
- Тестирования любого IP-адреса
- Проверки текущих настроек
- Диагностики проблем
- Просмотра системной информации
Режим тестирования для разработки
⭐ Новая возможность! Плагин поддерживает специальный режим тестирования для разработки на localhost.
Проблема localhost
При разработке на локальном сервере ваш IP определяется как внутренний (например, 192.168.65.1, 127.0.0.1), что не позволяет корректно тестировать GeoIP определение языка.
Решение - тестовый режим
-
Включите тестовый режим:
- Перейдите в "WP Multilang" → "GeoIP Settings"
- В секции "Настройки тестирования" включите "Режим тестирования"
- Укажите ваш реальный IP адрес
- Сохраните настройки
-
Тестирование работает автоматически:
- Плагин будет использовать указанный тестовый IP вместо локального
- Язык будет определяться корректно на основе страны тестового IP
- На странице тестирования появится уведомление об активном режиме
-
Быстрое тестирование:
- На странице "GeoIP Test" нажмите кнопку "Тестировать тестовый IP"
- Автоматически протестируется указанный в настройках IP
Узнать свой IP адрес
Чтобы узнать ваш реальный IP адрес:
- Откройте сайт whatismyipaddress.com
- Или используйте команду в терминале:
curl ifconfig.me - Скопируйте IP и укажите в настройках тестового режима
Использование тестовых IP адресов
Для быстрого тестирования используйте готовые IP адреса из раздела "Примеры тестирования":
- Скопируйте нужный IP из списка (например,
91.200.40.1для Украины) - В настройках тестирования укажите этот IP как тестовый
- На странице тестирования используйте кнопку "Тестировать тестовый IP"
- Проверьте результат - должен определиться соответствующий язык
Совет: Начните с украинского IP 91.200.40.1 для проверки базовой функциональности.
Страница тестирования
На странице "WP Multilang" → "GeoIP Test" доступно:
Тестирование IP адресов
- Поле для ввода любого IP адреса
- Кнопка "Тестировать" для проверки определения
- Результат показывает:
- Код и название страны
- Определенный язык
- Доступность языка в WP Multilang
Информация о настройках
- Статус включения GeoIP
- Состояние базы данных (размер, возраст)
- Режим тестирования и тестовый IP
- Количество настроенных соответствий стран
- Статус лицензионного ключа
- Настройки автообновления
Системная информация
- Версии PHP и WordPress
- Статус WP Multilang
- Доступные языки
- Статус библиотек GeoIP2 и Phar
- Информация о WordPress Cron
Отладочная информация
- Текущий определяемый IP адрес
- Найденные HTTP заголовки для IP
- Статус тестового режима
Примеры тестирования
Тестовые IP адреса по странам
🇺🇦 Украина (Ukraine)
IP: 91.200.40.1
Страна: UA (Ukraine)
Доступные языки: Українська (uk), Російська (ru), Англійська (en)
Определяется как: uk (украинский)
🇪🇸 Испания (Spain)
IP: 85.155.96.1
Страна: ES (Spain)
Доступные языки: Іспанська (es), Російська (ru), Англійська (en)
Определяется как: es (испанский)
🇬🇧 Великобритания (United Kingdom)
IP: 81.2.69.160
Страна: GB (United Kingdom)
Доступные языки: Англійська (en), Російська (ru)
Определяется как: en (английский)
🇱🇹 Литва (Lithuania)
IP: 78.61.224.1
Страна: LT (Lithuania)
Доступные языки: Литовська (lt), Російська (ru)
Определяется как: lt (литовский)
🇱🇻 Латвия (Latvia)
IP: 85.254.64.1
Страна: LV (Latvia)
Доступные языки: Латиська (lv), Російська (ru)
Определяется как: lv (латышский)
🇪🇪 Эстония (Estonia)
IP: 85.253.96.1
Страна: EE (Estonia)
Доступные языки: Естонська (et), Російська (ru)
Определяется как: et (эстонский)
Дополнительные тестовые IP
🇺🇸 США (для тестирования английского)
IP: 8.8.8.8 (Google DNS)
Страна: US (United States)
Определяется как: en (английский)
🇩🇪 Германия (для тестирования немецкого)
IP: 85.214.132.117
Страна: DE (Germany)
Определяется как: de (немецкий - если доступен)
Важные моменты
⚠️ Не забудьте отключить тестовый режим на продакшн сайте!
✅ Рекомендации:
- Используйте тестовый режим только для разработки
- Регулярно обновляйте базу данных GeoIP
- Проверяйте доступность языков в WP Multilang
- Тестируйте IP адреса разных стран для проверки настроек
Безопасность и производительность
Безопасность
- Все пользовательские данные проходят санитизацию
- AJAX запросы защищены nonce
- Проверка прав доступа для админских функций
- Валидация IP-адресов и кодов стран
Производительность
- База данных загружается только при необходимости
- Кэширование результатов определения
- Минимальное воздействие на скорость сайта
- Автоматическая очистка временных файлов
Поддержка прокси/CDN
Плагин корректно определяет реальный IP-адрес пользователя через заголовки:
HTTP_CF_CONNECTING_IP(Cloudflare)HTTP_X_FORWARDED_FOR(Load balancer/proxy)HTTP_CLIENT_IP(Proxy)- И другие стандартные заголовки
WordPress Cron
Автоматическое обновление базы данных настраивается через WordPress Cron:
- Планирование обновлений по расписанию
- Email уведомления при ошибках
- Логирование всех операций
Техническая информация
Файловая структура
geoip-wpmultilang/
├── geoip-wpmultilang.php # Основной файл плагина
├── composer.json # Зависимости
├── includes/ # PHP классы
│ ├── class-geoip-detector.php
│ ├── class-geoip-admin.php
│ ├── class-geoip-updater.php
│ └── class-geoip-settings.php
├── templates/ # Шаблоны админки
│ ├── admin-settings.php
│ └── admin-test.php
├── assets/ # База данных GeoIP
│ └── GeoLite2-Country.mmdb
├── vendor/ # Composer зависимости
└── languages/ # Переводы
Hooks и фильтры
wpm_get_language_from_url- основной фильтр для определения языкаgeoip_wpm_auto_update- WordPress Cron для автообновления
База данных
Плагин использует стандартные WordPress options:
geoip_wpm_settings- основные настройкиgeoip_wpm_version- версия плагинаgeoip_wpm_last_update- время последнего обновления базы
Changelog
v1.1.0
- Новое: Режим тестирования для разработки на localhost
- Новое: Подмена IP адреса в настройках для тестирования
- Улучшено: Расширенная страница тестирования с отладочной информацией
- Улучшено: Автоматическое отображение текущего IP адреса в админке
- Добавлено: Кнопка быстрого тестирования настроенного тестового IP
- Добавлено: Информация о статусе тестового режима в админке
v1.0.0
- Первоначальный релиз
- Интеграция с WP Multilang
- Автоматическое определение языка по GeoIP
- Админ-панель для настройки
- Автообновление базы данных MaxMind
- Система тестирования
Поддержка
При возникновении проблем:
- Проверьте страницу "GeoIP Test" для диагностики
- Убедитесь, что WP Multilang активен
- Проверьте, что база данных скачана и актуальна
- Убедитесь, что лицензионный ключ MaxMind корректен
Лицензия
GPL v2 or later
Авторы
Разработано для проекта Loft-X с использованием: