WP Manifestindependent plugin directory
manifest / i18n / geoip-wpmultilang

GeoIP WP Multilang self-updates

Плагин для автоматического определения языка сайта на основе геолокации пользователя для WP Multilang.

by Vitalii Karakushan · github.com/karakushan/geoip-wpmultilang · website

0stars
0forks

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.zip

Ships 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 (бесплатный)

Установка

  1. Скачайте плагин и поместите в директорию /wp-content/plugins/geoip-wpmultilang/
  2. Активируйте плагин в админ-панели WordPress
  3. Убедитесь, что плагин WP Multilang активен
  4. Перейдите в "WP Multilang" → "GeoIP Settings"
  5. Получите бесплатный лицензионный ключ на MaxMind.com
  6. Введите ключ в настройках и скачайте базу данных
  7. Настройте соответствие стран и языков
  8. Включите 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).

Приоритет определения языка

  1. Язык из URL (если указан в адресе)
  2. Язык из cookie (сохраненный выбор пользователя)
  3. GeoIP определение (по IP-адресу) ⭐ Новое!
  4. Язык браузера (Accept-Language заголовок)
  5. Язык по умолчанию (из настроек WP Multilang)

Тестирование

Используйте страницу "WP Multilang" → "GeoIP Test" для:

  • Тестирования любого IP-адреса
  • Проверки текущих настроек
  • Диагностики проблем
  • Просмотра системной информации

Режим тестирования для разработки

Новая возможность! Плагин поддерживает специальный режим тестирования для разработки на localhost.

Проблема localhost

При разработке на локальном сервере ваш IP определяется как внутренний (например, 192.168.65.1, 127.0.0.1), что не позволяет корректно тестировать GeoIP определение языка.

Решение - тестовый режим

  1. Включите тестовый режим:

    • Перейдите в "WP Multilang" → "GeoIP Settings"
    • В секции "Настройки тестирования" включите "Режим тестирования"
    • Укажите ваш реальный IP адрес
    • Сохраните настройки
  2. Тестирование работает автоматически:

    • Плагин будет использовать указанный тестовый IP вместо локального
    • Язык будет определяться корректно на основе страны тестового IP
    • На странице тестирования появится уведомление об активном режиме
  3. Быстрое тестирование:

    • На странице "GeoIP Test" нажмите кнопку "Тестировать тестовый IP"
    • Автоматически протестируется указанный в настройках IP

Узнать свой IP адрес

Чтобы узнать ваш реальный IP адрес:

  • Откройте сайт whatismyipaddress.com
  • Или используйте команду в терминале: curl ifconfig.me
  • Скопируйте IP и укажите в настройках тестового режима

Использование тестовых IP адресов

Для быстрого тестирования используйте готовые IP адреса из раздела "Примеры тестирования":

  1. Скопируйте нужный IP из списка (например, 91.200.40.1 для Украины)
  2. В настройках тестирования укажите этот IP как тестовый
  3. На странице тестирования используйте кнопку "Тестировать тестовый IP"
  4. Проверьте результат - должен определиться соответствующий язык

Совет: Начните с украинского 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
  • Система тестирования

Поддержка

При возникновении проблем:

  1. Проверьте страницу "GeoIP Test" для диагностики
  2. Убедитесь, что WP Multilang активен
  3. Проверьте, что база данных скачана и актуальна
  4. Убедитесь, что лицензионный ключ MaxMind корректен

Лицензия

GPL v2 or later

Авторы

Разработано для проекта Loft-X с использованием: