Причины создания Недавно меня попросили сделать геотаргетинг по городам для сайта WordPress. Пересмотрев существующие плагины геотаргетинга (в том числе и платные), я не нашел ни одного, работающего с городами (только странами).
Поэтому я решил сделать свой, используя какую-то существующую базу данных для определения местоположения по IP-адресу.
Сначала я начал с разработки функции в шаблоне, но потом решил создать плагин и выложить его на github, так как думаю, что он может быть полезен кому-то еще.
Выбор базы
Первым шагом был выбор базы.И это, наверное, одна из самых сложных проблем.
В процессе разработки я пробовал множество вариантов, даже делал CURL-запросы к сайтам, определяющим местоположение по IP, и парсил их.
Но все они были неточными; например, один московский IP определил его как Москва, другой определил его как просто Россия.
Также необходимо было, чтобы плагин работал не только с Россией, но и с Белоруссией и Украиной.
Перепробовав кучу разных баз данных, я остановился на Sypex Geo. У них есть условно-бесплатные и бесплатные версии баз данных.
Условно-бесплатное ПО использует REST API и возвращает данные в форме xml, json и jsonp. Бесплатную можно скачать в виде файла, также можно скачать класс для работы с ним.
Условно-бесплатная версия более точна, но обеспечивает бесплатно только 10 000 запросов.
Бесплатная версия также достаточно точна и обновляется на сайте.
Функциональный
Как я уже писал, начал не с плагина, а с функции в шаблоне.Сначала я думал только об условно-бесплатной версии базы, но количество бесплатных запросов закончилось через день-два.
Поэтому я перешёл на бесплатный, используя готовый класс для работы с файлом базы данных.
При разработке плагина я решил сделать выбор между локальной базой данных и REST API. В будущем планирую сделать кнопку автоматического обновления базы.
Также из базы данных можно вернуть русские и английские названия городов (стран, регионов).
В связи с этим я сделал выбор языка.
Также я столкнулся с необходимостью включить в список несколько городов или, наоборот, исключить некоторые.
Настройка плагина в админ-панели
Выполнение
Поскольку я редко работаю с Wordpress (как и со всеми CMS) и никогда не писал для него плагинов, я начал читать, как их писать, и смотреть, как работают существующие.Идею реализации я взял из существующих гео-плагинов.
Долгое время я думал о написании функционально или объектно-ориентированном.
Я решил сделать это функционально, так как плагин не большой.
Кратко опишу его работу.
При активации плагина мы инициируем две опции: тип базы данных и язык, на котором будем вводить имена.
Теги: #php #wordpress #плагин #геотаргетинг #sypex geo #wordpress #phpregister_activation_hook(__FILE__, 'wp_sypexgeo_activation'); function wp_sypexgeo_activation() {
-
Учет Главной Книги В Sap Fico
19 Oct, 24 -
Обзор Tizen Sdk. Родной
19 Oct, 24 -
Top4Top.ru: Разбор Полетов. 31 Мая, Москва
19 Oct, 24 -
Список Крупнейших Частных Партнеров Adsense
19 Oct, 24 -
Пол Грэм: «Краткость = Сила»
19 Oct, 24