Что такое массив в 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