РГ: Как изменить номер телефона в зависимости от местоположения - PullRequest
0 голосов
/ 07 мая 2018

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

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

1 Ответ

0 голосов
/ 07 мая 2018

Пара вещей.

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

За исключением всего этого, вы можете использовать такой ресурс, как ipstack

Вы отправляете запрос на https://api.ipstack.com/ с IP-адресом, который вы хотите использовать (потенциально $_SERVER['REMOTE_ADDR']?), И вашим ключом доступа.Таким образом, ваш URL запроса должен выглядеть следующим образом:

$ipstack_url = 'https://api.ipstack.com/123.456.789.001?access_key=YOURACCESSKEYHERE'

WordPress имеет встроенную функцию удаленного URL wp_remote_get(), которую вы можете использовать для получения этого значения.

$geo_info = wp_remote_retrieve_body( wp_remote_get( $ipstack_url ) );

Чтобы использовать ipstack (и ваш лимит запросов), вы, вероятно, должны кешировать его с помощью WP_Transients API в течение как минимум 24 часов (эти результаты не сильно изменятся), так что вы можете кэшировать еще дольше, если хотите).Вы получаете 10 000 запросов в месяц бесплатно, поэтому, если у вас сайт с высоким трафиком, это еще более важно

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

Если объединить все это, вы получите что-то вроде этого:

// Get your IP however you want
$ip_addr = $_SERVER['REMOTE_ADDR'];

// You'll need an API Key
$api_key = 'YOURACCESSKEYHERE';

// Build your API URL
$api_url = "https://api.ipstack.com/$ip_addr?access_key=$api_key"; // Build the API Url

// Give your transient a unique, yet identifiable name
$transient_name = "ipstack-$ip_addr";

// Check for our transient, if it's not there set it for 24 hours
if( false === ( $transient = get_transient( $transient_name ) ) ){
    set_transient( $transient_name, wp_remote_retrieve_body( wp_remote_get( $api_url ) ), 86400 );
}

// Decode the JSON response we got
$json = json_decode( get_transient( $transient_name ) );

// Do whatever you want with it
if( $json->city == 'Los Angeles' ){
    echo 'Phone For LA: 123-456-7890';
} else if( $json->city == 'San Francisco' ){
    echo 'Phone For SF: 321-654-0987';
} else {
    echo 'Default Phone: 098-765-4321';
}
...