Alex
Алекс

WordPress. Отображение города и страны человека, написавшего комментарий

Давно хотел на проектах, где комментирование “бурлит”, установить код, который отображал бы геолокацию пользователя по его ip-адресу. В принципе, ничего сложного в этом нет. Пару раз брался, но всё заканчивалось на том, что не мог найти подходящую базу. И вот, похоже, нашёл.

Есть такой хороший проект Sypex Geo и есть у него не менее хороший API. Да, он немного неточно показывает город моего провайдера (вместо Александрии он почему-то указывает на Кировоград), но это пока лучшая база, которую я нашёл. Ведь другие либо неправильно указывали даже регион, либо были на английском языке. Решено было вставить это API на действующие сайты.

В WordPress’е шаблон комментариев имеет название comments.php и лежит он в папке с темой (…/wp-content/themes/…/comments.php). Если же вы пользуетесь темами семейства TwentyX, вам нужен будет файл функций functions.php. В общем, находим мы строчку типа

<div class="comment-date"><?php printf( __( '%1$s at %2$s' ), get_comment_date(),  get_comment_time() ); ?>

(в данном случае я ставлю необходимый код после даты и времени комментария, если нужно вставить его в другом месте – пожалуйста) и после неё вставляем следующий код:

<?php 
$output = ''; // обнуление вывода
$url = 'http://api.sypexgeo.net/json/'.$comment->comment_author_IP; // отправка ip автора комментария
$response = file_get_contents($url);
$output = json_decode( $response );
if ( !empty($output->{'country'}->{'name_ru'} ) ) { // если ответ содержит название страны
 echo '<br />Местоположение: '.$output->{'city'}->{'name_ru'}.', '.$output->{'country'}->{'name_ru'}; 
};
?>

В общем, всё просто. На странице с API расписано более развёрнуто, только без php-кода. В данный момент код успешно работает на “Правдорубе” и “Люстрація.Кіровоградщина”. Установил и здесь, конечно же.

Надеюсь, кому-нибудь станет полезным этот материал. Вопросы – в комментариях.

Якщо вам сподобався чи став у нагоді текст, ви завжди можете віддячити! На каву

Залишити коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

*
*
*