Что такое массив в javascript. JavaScript-массив и его создание. Все о массивах JavaScript. Запись, чтение и добавление деталей массива

Геотаргетинг – это предоставление конкретного контента посетителям сайтов на основе их географического местоположения, обычно страны или города, определение которых происходит по их IP-адресу .

Эта техника существует уже так давно, что стала повсеместной. Google предоставляет результаты поиска, адаптированные к вашему местоположению, Amazon предлагает персонализированные домашние страницы с рекомендуемыми продуктами, а eBay — отображает местную валюту.

Более свежим примером геотаргетинга является сам WordPress . Актуальный релиз 4.8 включает в себя новый виджет панели инструментов, который отображает предстоящие события, адаптированные к вашему географическому положению:

Использование Google Analytics для определения местоположения посетителей

Вы можете использовать Google Analytics , чтобы узнать больше о своих посетителях и том, откуда они. Для этого войдите в аналитический сервис и перейдите на вкладку Аудитория> Демография> Гео> Местоположение :


Вы увидите карту мира с цветовой кодировкой, которая соответствует демографии вашей аудитории. Чуть ниже — более подробный анализ, включающий страны, где находятся пользователи, сессии, новых пользователей, показатель отказов, транзакции и доходы.

Можно использовать эту информацию, чтобы персонализировать контент на своем сайте. Например, на основе геоданных в приведенном выше профиле Google Analytics , можно:

  • Добавить на сайт немецкий перевод;
  • Выделить больше времени на продвижение контента среди американской аудитории (например, организовать рекламные акции к выходным дням в США );
  • Сообщить немецким посетителям, что вы собираете их информацию в соответствии с законом Евросоюза о файлах cookie ;
  • Установить связь с посетителями, приветствуя их соответствующе местоположению (например, скажите «G’Day! » австралийским посетителям );
  • Продемонстрировать отзывы клиентов с той же географической местности, откуда пользователь;
  • Оповестить посетителей из США, Канады, Австралии, Великобритании и Германии о том, что вы осуществляете доставку до их местонахождения.

Использование геотаргетинга в WordPress

Рассмотрим простой пример использования геотаргетинга для сайта: отображение приветственных сообщений посетителям из разных стран.

Отображение приветственного сообщения

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

В этом примере я хочу показать альтернативное приветствие на моей домашней странице, которое отображается только для посетителей из Австралии. Посетители из других стран увидят стандартное приветственное сообщение.

Шаг 1: Устанавливаем плагины

Для реализации этого примера мы будем использовать несколько бесплатных плагинов, доступных в WordPress Plugin Directory :

  • Custom Content by Country ;
  • Widgets on Pages ;
  • Shortcode Widget .

Custom Content by Country – это простой плагин, который применяет шорткоды для отображения контента в зависимости от местоположения пользователей. Мы будем использовать его для геотаргетинга контента. Начнем с того, что будем использовать его для отображения альтернативного приветствия.

Я хочу отобразить альтернативное приветственное сообщение над заголовком темы, поэтому использую плагин Widgets on Pages для добавления виджета в заголовок.

Плагин Shortcode Widget позволит легко использовать шорткоды на сайте, без необходимости добавлять фильтр в файл functions.php или создавать дочернюю тему.

Шаг 2: Создаем специализированный виджет

В этом примере геотаргетинга WordPress я использую популярную бесплатную тему Zerif Lite . Вот как она выглядит сразу после установки:


Я хочу отображать индивидуальное приветствие вместо типового, включенного в тему Zerif Lite . Для этого я воспользуюсь собственным виджетом.

Сначала внесем несколько изменений в используемую тему:

  • Заменим изображение заголовка;
  • Удалим зеленую кнопку;
  • Заменим текст красной кнопки.

Теперь создадим собственный виджет для заголовка, используя Widgets on Pages . Перейдите на вкладку Widgets on Pages > Turbo Sidebars и нажмите Add New Turbo Sidebar .

Дайте виджету имя (в моем случае это будет «Header Widget » ) и нажмите Update . Затем скопируйте предоставленный шорткод.

В файлах темы добавьте шорткод там, где вы хотите отобразить альтернативный текст. Я хочу отобразить текст в заголовке, поэтому в теме Zerif Lite отредактирую файл big_title.php и заменю строку:

zerif_big_title_text_trigger(); на приведенную ниже строку: widgets_on_template("header_widget");

Нажмите Update File , чтобы сохранить изменения, внесенные в настройки геотаргетинга.

Шаг 3: Добавляем шорткод в виджет для отображения индивидуального изображения в приветствии

Перейдите в Custom Content > Content by Country и нажмите на опцию «Enable Content by Country Feature » («Разрешить контент по странам »). По умолчанию этот параметр отключен.

Затем перейдите в Appearance> Widgets . Здесь вы найдете новый виджет «header_widget ». А также увидите новый Shortcode Widget , указанный в разделе доступных виджетов.

Перетащите Shortcode Widget на header_widget . В области контента вставьте шорткоды для виджета Custom Content by Country . Вот мой пример:

Brr! It’s cold outside!
Let’s warm up your noggin! Looking for a great hat?
Sale on now!


Первый шорткод отобразит «Brr! It’s cold outside! Let’s warm up your noggin! » посетителям из Австралии, поскольку для «show » установлено значение «y » (yes ).

Второй шорткод отобразит «Looking for a great hat? Sale on now! » всем посетителям, которые находятся не в Австралии, так как я установил для «show » значение «n » (no ).


Страница содержит второе приветственное сообщение для посетителей не из Австралии, потому что я нахожусь в Канаде. Если у вас есть VPN , включите его и укажите свое местоположение где-нибудь в Австралии:


Выглядит хорошо! Но очевидно, что нужно какое-то стилевое оформление геотаргетинга для сайта.

Шаг 4: Добавляем стили CSS

Оформление, которое добавляет плагин Custom Content by Country , довольно незатейливое. Откройте файл CSS основной или дочерней темы и добавьте следующие строки для простого оформления:

Cbc_content { color:#ffffff; font-size:80px; }

Теперь обновите пользовательский интерфейс, чтобы увидеть, как он выглядит:


Это очень простой пример того, как геотаргетинг контента, представленного на WordPress-сайте , может работать с персонализированным контентом. А также того как отображать на сайте контент для посетителей из разных стран.

Геотаргетинг контента с помощью плагинов

Доступно множество других плагинов для добавления функции геотаргетинга в WordPress :

Geolify (премиум ): это платное SaaS-решение позволяет применить геотаргетинг ко всему содержимому сайта, включая перенаправления, ссылки, контент, всплывающие окна, панели уведомлений, изображения, JavaScript .
GEO my WordPress (бесплатный ): этот плагин работает с постами, страницами и настраиваемыми типами записей. Он также работает с BuddyPress , поэтому участники могут добавить свое местоположение.
WP Geo (бесплатный ): позволяет установить физическое местоположение пользователя и вставить эту информацию с помощью карты Google .
GEO my WP (премиум ): плагин предлагает расширенные возможности для геотаргетинга контента, включая опции для пользовательских типов и BuddyPress , автоматическое заполнение адресов Google Places , ближайшие места и текущее местоположение пользователя.
GeoIP Detection (бесплатный ): плагин предоставляет информацию о географическом положении, определяемую по IP-адресу , которую затем можно использовать в темах. Предназначен для разработчиков, которые затем могут применить эту информацию.
GeoTargeting Lite (бесплатный ): плагин геотаргетинга использует шорткоды для отображения контента пользователям на основе их географического местоположения.
Geotargeting WP (премиум ): этот API-сервис позволяет разработчикам запускать геотаргетинг контента для любой части сайта, включая записи, страницы, пользовательские типы сообщений, такие как продукты WooCommerce , виджеты, меню и файлы шаблонов.

Недавно попросили сделать геотаргетинг по городам для сайта на . Пересмотрев существующие геотаргетинг-плагины (в том числе платные), не нашёл не одного работающего с городами (только страны). Поэтому решил сделать свой, используя какую-нибудь существующую базу для определения местоположения по IP-адресу. Сначала начал с разработки функции в шаблоне, но потом решил создать плагин и выложить на github, так как думаю, что он может пригодиться кому-нибудь ещё.

Выбор базы

Первым делом нужно было выбрать базу. И это, наверное, одна из самых сложных проблем. В процессе разработки пробовал много вариантов, даже делал CURL-запросы на сайты, определяющие местоположение по ip, и парсил их. Но все они были не точны, к примеру, один Московский IP определяло как Москву, другой - просто Россия. Также нужно было, чтобы плагин работал не только с Россией, но и с Беларусью и Украиной. Перепробовав кучу множество баз, я остановился на Sypex Geo. У них есть условно-платная и бесплатная версии баз. Условно-платная использует REST API и возвращает данные в виде xml, json и jsonp. Бесплатную можно скачать в виде файла, также можно скачать класс для работы с ней. Условно-платная версия более точная, но бесплатно предоставляет только 10 000 запросов. Бесплатная версия тоже достаточно точна и обновляется на сайте.

Функционал

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

При разработке плагина я решил сделать выбор между локальной базой и REST API. В будущем планирую сделать кнопку автоматического обновления базы.

Также из базы можно вернуть русские и английские имена городов (стран, регионов). В связи с этим сделал выбор языка.
Ещё столкнулся с тем, что нужно включить список несколько городов или наоборот исключить какой-то.

Настройка плагина в админке

Реализация

Так как с WordPress я работаю редко (как и со всеми CMS) и написанием плагинов для него никогда не занимался, начал читать, как их писать и смотреть, как устроены существующие. Идею реализации взял с существующих гео-плагинов. Ещё долго думал писать функционально или объектно-ориентированно. Решил функционально, так как плагин не большой.

Вкратце опишу его работу.

При активации плагина инициируем две опции: тип бд и язык на котором будем вводить названия.

Register_activation_hook(__FILE__, "wp_sypexgeo_activation" ); function wp_sypexgeo_activation () { update_option("sgeo_language" , "en" ); update_option("sgeo_dbase" , "loc" ); }

Add_filter("the_content" , "geotargeting_filter" ); add_filter("the_content_rss" , "geotargeting_filter" ); add_filter("the_excerpt" , "geotargeting_filter" ); add_filter("the_excerpt_rss" , "geotargeting_filter" );

вызывают функцию

geotargeting_filter

В которую приходит текущий контент. В зависимости от типа базы вызывается функция для получения данных. Затем идёт поиск специальных тегов в шаблоне и сверка их с данными о местоположении. Если данные совпадают то конструкция заменяется на содержимое из тегов, если нет - она удаляется.

Использование

Для указания списка стран:

Привет Belarus,Russia!

Для указания списка регионов:

Привет Moscow Region!

Для указания списка городов:

Привет Минск,Брест!

Если вы хотите выбрать страны (регионы, города) за исключением указанных, используйте «out»:

Привет всем, кроме Minsk,Brest!

Пример использования в шаблоне:

Добро пожаловать в WordPress. Это ваша первая запись. Отредактируйте или удалите её, затем пишите! Наши контакты: +375295552255+375475552255

Заключение

Надеюсь, мой плагин кому-нибудь пригодится. Если есть вопросы или предложение - пишите. Также, если кто-то считает, что нужно использовать другую базу (геосервис или ещё что-нибудь), предлагайте, я добавлю или можете добавить сами.

25 мая 2015 в 14:23

Геотаргетинг по городам (регионам, странам) для WordPress

  • PHP ,
  • WordPress

Причины создания

Недавно попросили сделать геотаргетинг по городам для сайта на wordpress. Пересмотрев существующие геотаргетинг-плагины (в том числе платные), не нашёл не одного работающего с городами (только страны). Поэтому решил сделать свой, используя какую-нибудь существующую базу для определения местоположения по IP-адресу. Сначала начал с разработки функции в шаблоне, но потом решил создать плагин и выложить на github, так как думаю, что он может пригодиться кому-нибудь ещё.

Выбор базы

Первым делом нужно было выбрать базу. И это, наверное, одна из самых сложных проблем. В процессе разработки пробовал много вариантов, даже делал CURL-запросы на сайты, определяющие местоположение по ip, и парсил их. Но все они были не точны, к примеру, один Московский IP определяло как Москву, другой - просто Россия. Также нужно было, чтобы плагин работал не только с Россией, но и с Беларусью и Украиной. Перепробовав кучу множество баз, я остановился на Sypex Geo. У них есть условно-платная и бесплатная версии баз. Условно-платная использует REST API и возвращает данные в виде xml, json и jsonp. Бесплатную можно скачать в виде файла, также можно скачать класс для работы с ней. Условно-платная версия более точная, но бесплатно предоставляет только 10 000 запросов. Бесплатная версия тоже достаточно точна и обновляется на сайте.

Функционал

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

При разработке плагина я решил сделать выбор между локальной базой и REST API. В будущем планирую сделать кнопку автоматического обновления базы.

Также из базы можно вернуть русские и английские имена городов (стран, регионов). В связи с этим сделал выбор языка.
Ещё столкнулся с тем, что нужно включить список несколько городов или наоборот исключить какой-то.

Настройка плагина в админке

Реализация

Так как с Wordpress я работаю редко (как и со всеми CMS) и написанием плагинов для него никогда не занимался, начал читать, как их писать и смотреть, как устроены существующие. Идею реализации взял с существующих гео-плагинов. Ещё долго думал писать функционально или объектно-ориентированно. Решил функционально, так как плагин не большой.

Вкратце опишу его работу.

При активации плагина инициируем две опции: тип бд и язык на котором будем вводить названия.

Register_activation_hook(__FILE__, "wp_sypexgeo_activation"); function wp_sypexgeo_activation() { update_option("sgeo_language", "en"); update_option("sgeo_dbase", "loc"); }
Далее add_filter("the_content", "geotargeting_filter"); add_filter("the_content_rss", "geotargeting_filter"); add_filter("the_excerpt", "geotargeting_filter"); add_filter("the_excerpt_rss", "geotargeting_filter"); вызывают функцию

geotargeting_filter

function geotargeting_filter($s) { //parse Country preg_match_all("#\[" . GEOTARGETING_COUNTY . "\s*(in|out)=([^\]]+)\](.*?)\#isu", $s, $country); //parse Country preg_match_all("#\[" . GEOTARGETING_REGION . "\s*(in|out)=([^\]]+)\](.*?)\#isu", $s, $region); //parse Country preg_match_all("#\[" . GEOTARGETING_CITY . "\s*(in|out)=([^\]]+)\](.*?)\#isu", $s, $city); if (empty($country) && empty($region) && empty($city)) { return $s; } $base_type = get_option("sgeo_dbase"); if ($base_type == "loc") { $ipdata = getLocInfo(); } elseif ($base_type == "rm") { $ipdata = getRemInfo(); } if (!empty($country)) { foreach ($country as $i => $raw) { $type = strtolower($country[$i]); $countries = strtolower(trim(str_replace(array("\"", """, "\n", "\r", "\t", " "), "", $country[$i]))); $content = $country[$i]; $countries = explode(",", $countries); $replacement = ""; if ((($type == "in") && in_array($ipdata["country"], $countries)) || (($type == "out") && !in_array($ipdata["country"], $countries))) { $replacement = $content; } $s = str_replace($raw, $replacement, $s); } } if (!empty($region)) { foreach ($region as $i => $raw) { $type = strtolower($region[$i]); $regions = strtolower(trim(str_replace(array("\"", """, "\n", "\r", "\t"), "", $region[$i]))); $content = $region[$i]; $regions = explode(",", $regions); $replacement = ""; if ((($type == "in") && in_array($ipdata["region"], $regions)) || (($type == "out") && !in_array($ipdata["region"], $regions))) { $replacement = $content; } $s = str_replace($raw, $replacement, $s); } } if (!empty($city)) { foreach ($city as $i => $raw) { $type = strtolower($city[$i]); $cities = strtolower(trim(str_replace(array("\"", """, "\n", "\r", "\t", " "), "", $city[$i]))); $content = $city[$i]; $cities = explode(",", $cities); $replacement = ""; if ((($type == "in") && in_array($ipdata["city"], $cities)) || (($type == "out") && !in_array($ipdata["city"], $cities))) { $replacement = $content; } $s = str_replace($raw, $replacement, $s); } } return $s; }

В которую приходит текущий контент. В зависимости от типа базы вызывается функция для получения данных. Затем идёт поиск специальных тегов в шаблоне и сверка их с данными о местоположении. Если данные совпадают то конструкция заменяется на содержимое из тегов, если нет - она удаляется.

Использование

Для указания списка стран: Привет Belarus,Russia!
Для указания списка регионов: Привет Moscow Region!
Для указания списка городов: Привет Минск,Брест!
Если вы хотите выбрать страны (регионы, города) за исключением указанных, используйте «out»: Привет всем, кроме Minsk,Brest!

Пример использования в шаблоне:

Добро пожаловать в WordPress. Это ваша первая запись. Отредактируйте или удалите её, затем пишите! Наши контакты: +375295552255+375475552255

Заключение

Надеюсь, мой плагин кому-нибудь пригодится. Если есть вопросы или предложение - пишите. Также, если кто-то считает, что нужно использовать другую базу (геосервис или ещё что-нибудь), предлагайте, я добавлю или можете добавить сами.


Top