Kselax.ru

Hacker Kselax — the best hacker in the world

Menu
  • Блог
  • Контакты
  • wp plugin генератор
  • Русский
    • Русский
    • English
Menu

wordpress определение ip пользователя и вывод информации

Posted on 4 апреля, 20168 июня, 2017 by admin

WordPress определение ip пользователя, разберем как можно определить ip пользователя и его город и вывисти ему соответствено информацию для его города, а другие не показывать.

Существует плагин WP GeoTargeting для wordpress определение ip пользователя. В общем его скачиваем и его переделываем. Было у меня задание, нужно было сделать чтобы были новости по городам….

wordpress определение ip пользователя

Устанавливаем этот плагин, а дальше можно написать свой плагин используя те файлы что есть в этом плагине. Там два текстовых файла один с городами, а другой кажется со странами
wp_GeoTargeting1в cities.txt находятся города, в counties находятся страны. в файле data_files.php находится класс для определения кажется городов и вывода списка городов. А в файле geo находится класс для проверки айпи пользователя

wordpress определение ip пользователя код

Приведу просто код который писал, там он в виде плагина, создается вначале метабокс для типа post с методаными города для wordpress определение ip пользователя, и там есть функция которая определяет айпи пользователя

Показать »

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
<?php
/*
Plugin Name: simple-add-product-plagin
Plugin URI: http://kselax.ru/
Description: Create a simple store to display product information
Version: 1.0
Author: Hacker Kselax
Author URI: http://kselax.ru
License: GPLv2
*/
 
//подключаем файлы
require_once('data_files.php');//класс для работы с городами
require_once("geo.php"); // Подключаем класс для работы с базой
 
//определяем город по ip
function my_plugin_get_city(){
    //задаем айпи места, если пусто то будет твой айпи
    //реальны
    //абакан '89.249.128.4'
    //киев '37.53.32.49'
    //москва 62.76.232.3
    //волгоград 88.87.88.215
    //димитров 62.122.100.1
    $options = array('ip' => '');
 
    $geo = new Geo_my($options);
    //получаем ip
    $ip = $geo->ip;
    //получаем город
    $city = $geo->get_value('city',false);
    return $city;
}
 
//функция возвращает имя если оно есть и пусто если нет
function my_plugin_get_name(){
    //проверка на post
    $name=my_plugin_obr_post(); //получаем пост если есть
    if($name!="")
        return $name;
 
    my_plugin_obr_post();
 
    $options = array();
    $cities_file_path = dirname(__FILE__) . '/cities1.txt';  
    $cities_file = fopen($cities_file_path, 'r');
 
    // Перебираем данные файла
    rewind($cities_file);//переводим на начало файла
    while(!feof($cities_file))
    {
        $str = fgets($cities_file);             // Сохраняем строку
        if (empty($str)) continue;
        $arRecord = explode("\t", trim($str));  // Дробим на массив
        $city_id = $arRecord[0];
      //  $city_name = iconv('windows-1251', 'UTF-8', $arRecord[1]);      // Меняем кодировку с windows-1251 на UTF-8 и сохраняем
        $city_name=$arRecord[1];
        $options[$city_id] = $city_name;
    }  
 
    //получаем город
    $city=my_plugin_get_city();//получаем город
    echo "city= $city<br>";
    if(isset($options[$city]))
        return $options[$city];
 
    return "";
}
 
//функция для обработки пост запроса
function my_plugin_obr_post(){
    if(isset($_POST['my_plagin_town_sort'])){
        return sanitize_text_field( $_POST['my_plagin_town_sort']);
    }
}
 
// echo "pre<pre>";
// print_r($city);
// echo "</pre>";
 
// $data_files = new WtGeoTargetingDataFiles_my();
// //получаем по id город
// $debug_geo_data = $data_files->getCityInfo('1');
// echo "<pre>";
// print_r($debug_geo_data);
// echo "</pre>";
 
// wp_die('end');
 
//create metadate
add_action( 'add_meta_boxes', 'my_plagin_meta_box_init' );
// meta box functions for adding the meta box and saving the data
function my_plagin_meta_box_init() {
    // создаем наш пользовательский metabox
    //1 - HTML ID attribute
    //2 - title в метабоксе
    //3 - callback function
    //4 - тип постов ('post','page',or custom post type name)
    //5 - размещение ('normal','advanced',or 'side')
    //6 - приоритет ('high','core','default',or 'low')
    add_meta_box( 'prowp-meta', 'Выберите город',
    'my_plagin_meta_box', 'post', 'side', 'default' );
}
// draw metabox
function my_plagin_meta_box( $post, $box ) {
    // retrieve the custom meta box values
    $my_plagin_featured = get_post_meta( $post->ID, '_my_plagin_town', true );
 
    // == display form metabox ==
    //nonce for security
    wp_nonce_field( plugin_basename( __FILE__ ), 'my_plagin_save_meta_box' );
    //custom meta box form elements
    //get towns from file
    $data_files = new WtGeoTargetingDataFiles_my();
    $array_fields=$data_files->getCities();
    //display towns
    echo "<p>Город: ";
    echo "<select id='my_plagin_town' name='my_plagin_town'>";
    $selected=($my_plagin_featured=="")?"selected='selected'": '';
    echo "my_plagin_featured= $my_plagin_featured <br>";
    echo "<option value='Без города' $selected>Без города</option>";
    foreach($array_fields as $v){
        $selected = ($my_plagin_featured == $v) ? "selected='selected'" : '';  
        echo "<option value='$v' $selected>$v</option>";
    }
    echo "</select>";
    echo "</p>";
}
// hook to save our meta box data when the post is saved
//хук сохраняет нашего метабокс данные когда пост сохранен
add_action( 'save_post', 'my_plagin_save_meta_box' );
function my_plagin_save_meta_box( $post_id ) {
    // process form data if $_POST is set
    if( isset( $_POST['my_plagin_town'] ) ) {
        // if auto saving skip saving our meta box data
        if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
        return;
        //check nonce for security
        //1 - значение уникальное из поля.
        //2 - ключь
        if(wp_verify_nonce($_POST['my_plagin_save_meta_box'],plugin_basename( __FILE__ ))==false)
        return;
        // save the meta box data as post meta using the post ID as a unique prefix
        // сохраняем метабокс данные как post meta используя post ID и уникальный префикс
        //1 - post ID
        //2 - meta_key
        //3 - сами данные которые добавляются
        update_post_meta( $post_id, '_my_plagin_town',
        sanitize_text_field( $_POST['my_plagin_town'] ) );
    }
}
 
?>

И сам вывод постов только тех постов для которых существует город пользователя, его добавляем в шаблон темы где нужно вывести посты.

Показать »

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<h1>Вывод постов</h1>
<!-- выводим форму -->
<?php
$city=my_plugin_get_name();
if($city=="") $city="Без города";
echo "city= $city<br>";
 
echo "<form method='post' action='".site_url()."' name='element'>";
$data_files = new WtGeoTargetingDataFiles_my();
$array_fields=$data_files->getCities();
//display towns
echo "<p>По регионам: ";
echo "<select id='my_plagin_town' name='my_plagin_town_sort'>";
$selected=($city=="")?"selected='selected'": '';
echo "my_plagin_featured= $my_plagin_featured <br>";
echo "<option value='Без города' $selected>Без города</option>";
foreach($array_fields as $v){
    $selected = ($city == $v) ? "selected='selected'" : '';  
    echo "<option value='$v' $selected>$v</option>";
}
echo "</select>";
 
?>
<input type="submit" name="sub" value="sort"/>
<?php
echo "</p>";
echo "</form>";
//вывод в цикле статей
$cat2args =  array(
'posts_per_page' => 5 ,
'meta_key' => '_my_plagin_town',
'meta_value' => $city,
    'orderby' => 'date'
    );
$myPosts = new WP_Query( $cat2args );
 
while ($myPosts->have_posts()) : $myPosts->the_post();
?>
 
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> </h2>
 
<?php endwhile; wp_reset_query(); ?>
 
<h1>Конец вывода постов</h1>

Скачать можно исходники wordpress определение ip пользователя можно тут: my-plagin

Код я так до нормального не доделал, это просто наброски. да и том там не для всех городов

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Рубрики

  • C++ (293)
  • JavaScript (1)
  • linux (1)
  • MFC (39)
  • node.js (2)
  • React (3)
  • uncategorized (3)
  • vBulletin (5)
  • Visual Studio (9)
  • wordpress (18)
  • Разное (121)

Метки

Ajax bootstrap CentOS CLI expressjs FormData GDlib google Invisible reCAPTCHA JWT media MFC php react-router-dom redux repository wordpress RTTI STL vBulletin vector Visual Studio WINAPI wordpress wp-plugins XMLHttpRequest Двоичное дерево Задачи С++ Игры С++ Исключения С++ О-большое Операторы_С++ Перегрузка операторов С++ Поиск С++ Потоки Проектирование_С++ С++ Типы_С++ Типы С++ Шаблоны С++ библиотеки локализация макросы С++ сортировка С++

Свежие комментарии

  • Proffirot к записи Программка для заполнения форума на vBulletin 3.8.7
  • RA3PKJ к записи visual C++, создание диалоговых окон.
  • JasonReant к записи Создание и использование статических библиотек .lib в visual studio.
  • MyWin2020 к записи Программка для заполнения форума на vBulletin 3.8.7
  • ScottJip к записи Создание и использование статических библиотек .lib в visual studio.
©2021 Kselax.ru Theme by ThemeGiant