Как узнать число читателей, или как настроить счётчик просмотров той или иной статьи гостями – этот вопрос сегодня и решим. А вообще-то – эта статья мною пишется для того, чтобы ответить на вопрос одного из моих читателей: он спрашивал – как лучше вывести в информационной части (обычно это в начале поста) счётчик читателей конкретной статьи? (см. миниатюру).
Товарищ спрашивал) каким плагином возможно решить задачу? Я ему посоветовал всё это дело организовать без плагинов… Это не сложно – пара редакций ф. функций!
И вообще, для того, чтобы вывести счётчик просмотров в статье, – его для начала нужно вывести в админке… т.е привязать саму функцию счётчика к сайту.
В этой статье и разберёмся как всё это дело организовать. Занавес открывается…
счётчик количества просмотров поста – в админке
Однако по порядку!
Код, показанный мною ниже, целиком и полностью автора wp_kama (Тимура – ссылка у меня в логолисте) – код замечательно работает – “велосипед изобретать незачем”! Лёгкий (не грузит блог).
Функция подсчёта числа прочтений заработает сразу же как только пропишете показанные скрипты ниже: в версиях от 4… до WP 6.5.4 – проверено!!
Число читателей статьи (или счётчик количества просмотров) выводится в админпанели, раздел “Все записи”.
Если вы планируете в перспективе менять тему оформления своего сайта, возможно, вам будет правильнее организовать функцию подсчёта читателей статьи в отдельный плагин. Как это делается (смотрите на примере создания /оч. полезного/ добавочного файла функций – плагина) в этой статье.
Итак…
В итоге нынешней работы получится так, как на фотке ниже. (А чтобы вывести результаты количества просмотров статей в информационном блоке поста, – для всех посетителей сайта, или только для админа /зарегистрированных пользователей/, об этом следующая статья – а всё это чудо, визуально будет выглядеть как на миниатюре этого моего повествования)
Ради справки:
чем раньше счётчик будет установлен на вашем блоге/сайте, тем большее число будет красоваться на счётчике – так вот.
Что ж – поехали кататься:
Для великого начала помещаем в файл (или созданный плагин) функций такой код:
Помните, да? код в файле функций functions.php нужно вписывать перед закрывающим тегом ?>
… ну, или в отведённом блоке для похожих по функционалу кодов.
/** Дополнительные сортируемые колонки для постов в админке на страничке записи ДЛЯ КОЛЛИЧЕСТВА ПРОСМОТРОВ ПОСТА **/
// создаем новую колонку
add_filter('manage_edit-post_columns', 'add_views_column', 4);
function add_views_column( $columns ){
// удаляем колонку Автор
//unset($columns['author']);
// вставляем в нужное место - 3 - 3-я колонка
$out = array();
foreach($columns as $col=>$name){
if(++$i==3)
$out['views'] = 'Визиты';
$out[$col] = $name;
}
return $out;
}
// заполняем колонку данными
add_filter('manage_post_posts_custom_column', 'fill_views_column', 5, 2); // wp-admin/includes/class-wp-posts-list-table.php
function fill_views_column( $colname, $post_id ){
if( $colname === 'views' ){
echo get_post_meta($post_id, 'views', 1);
}
}
// подправим ширину колонки через css
add_action('admin_head', 'add_views_column_css');
function add_views_column_css(){
echo '<style type="text/css">.column-views{width:10%;}</style>';
}
// добавляем возможность сортировать колонку
add_filter('manage_edit-post_sortable_columns', 'add_views_sortable_column');
function add_views_sortable_column($sortable_columns){
$sortable_columns['views'] = 'views_views';
return $sortable_columns;
}
// изменяем запрос при сортировке колонки
add_filter('pre_get_posts', 'add_column_views_request');
function add_column_views_request( $object ){
if( $object->get('orderby') != 'views_views' )
return;
$object->set('meta_key', 'views');
$object->set('orderby', 'meta_value_num');
}
/** Дополнительные сортируемые колонки для постов в админке на страничке записи ДЛЯ КОЛЛИЧЕСТВА ПРОСМОТРОВ ПОСТА **/
Переходим к этапу завершения…
Теперь нужно поместить этот: (важно: располагать именно под кодом, который дан выше)
/** Подсчет количества посещений страниц **/
add_action('wp_head', 'kama_postviews');
function kama_postviews() {
/* ------------ Настройки -------------- */
$meta_key = 'views'; // Ключ мета поля, куда будет записываться количество просмотров.
$who_count = 1; // Чьи посещения считать? 0 - Всех. 1 - Только гостей. 2 - Только зарегистрированных пользователей.
$exclude_bots = 1; // Исключить ботов, роботов, пауков и прочую нечесть :)? 0 - нет, пусть тоже считаются. 1 - да, исключить из подсчета.
global $user_ID, $post;
if(is_singular()) {
$id = (int)$post->ID;
static $post_views = false;
if($post_views) return true; // чтобы 1 раз за поток
$post_views = (int)get_post_meta($id,$meta_key, true);
$should_count = false;
switch( (int)$who_count ) {
case 0: $should_count = true;
break;
case 1:
if( (int)$user_ID == 0 )
$should_count = true;
break;
case 2:
if( (int)$user_ID > 0 )
$should_count = true;
break;
}
if( (int)$exclude_bots==1 && $should_count ){
$useragent = $_SERVER['HTTP_USER_AGENT'];
$notbot = "Mozilla|Opera"; //Chrome|Safari|Firefox|Netscape - все равны Mozilla
$bot = "Bot/|robot|Slurp/|yahoo"; //Яндекс иногда как Mozilla представляется
if ( !preg_match("/$notbot/i", $useragent) || preg_match("!$bot!i", $useragent) )
$should_count = false;
}
if($should_count)
if( !update_post_meta($id, $meta_key, ($post_views+1)) ) add_post_meta($id, $meta_key, 1, true);
}
return true;
}
/** Фин Подсчет количества посещений страниц **/
Вот как бы и всё! Неожиданно, да?
Кое-какие настроечки кода, располагаются в комментариях (вверху самого кода). Прочтите… может что-то потребуется изменить.
выводим счётчик читателей – в статье
Выводить (вызывать функцию) счётчика так:
Пост видели: <?php echo get_post_meta ($post->ID,'views',true); ?>
Помещать функцию вывода счётчика читателей статьи где-нить рядом с функциями вывода автора и даты поста:
У некоторых в файле single.php
функции даты и автора выглядят приблизительно так:
<?php the_modified_time('Y-m-d')?>
<?php the_author() ?>
Вот где-то рядышком с ними… и помещайте нашу функцию… Вывод числа читателей (т.е расположение цифр) определяется в соответствии с вашими желаниями.
Ну а для тех читателей, которым не терпится вывести счётчик просмотров в информации к статье – а заодно (кому нужно) и идентификатор поста – id статьи – видимый только для админа: поработаем с условиями… переходим к следующей моей публикации…
Если что-то не ясно, спрашивайте в комментариях…
...и конечно же, читайте статьи сайта и подписывайтесь:
Делюсь горьким опытом - кое-какими знаниями, для вашего сладкого благополучия))
На этом занавес представления опускается…
…на рампы пыль печальная ложится…
Online консультация по настройкам и созданию сайтов на WordPress
mihalica.ru !
Привет! Хорошее представление, но как то боязно. Да и думаю, оно мне надо? Вдруг потом окажется что никто не читает, этож будет пипец и полный занавес. Пока вроде как надеешься, а как узнаешь, то труба.
Но за науку, спасибо.)))
Привет-привет, Андрей!!
Да ну, брось ты… это ж удобство!! Да и к счётчику многое можно (и нужно) привязывать…
Да и на всеобщий обзор можно не выводить счётчик-то)) а в админке полезно!
К примеру, захочешь самое читаемое вывести на блоге (ну, по какому-то рейтингу и пр.) а у тебя – бац!! усё готово!
Чем раньше поставишь – тем раньше и БОЛЬШЕ число читателей наберётся))
Так что не бойся делать блог ширше параметрами)) – испортить ничего невозможно!! только улучшить!
Кстати, не пробовал Фаерфокс новый – 52. как он себя ведёт с rds баром? Чо-то времени нет потестить… 51. помню ерундил…
Так я работаю в Хроме. А этот RDS, терпеть не могу.)))
А-а… я думал ты по разным бразам прикалываешься…
Нет, Мозила есть, но бываю я там редко, поэтому и обновлять не спешу. А прикалываюсь я сейчас в игрушку “Heroes at War” )))
Ну ?? и как, королевский трон заполучил…
А шо ?? на ней (игрушке, в смысле) можно подзаработать??
Научи-кась!
Научить можно, а подзаработать наверно в ней нельзя. Это так понты, делать нечего, вот и прикалываюсь по вечерам )))
Жаль, что нельзя подработать…
Я бы поиграл!
А где можно поз..?
“А где можно…” На покер старс. Правда нужно быть аккуратным, а то можно и проиграть все бабло )))
Спасибо, – я аккуратным быть не могу…
Точно всё проиграю…
Я уж лучше посмотрю, как другие зарабатывают))
Андрей Косолапов, лучше поставить счетчик, написать хорошую статью по жирному запросу, типа “что такое сервер” и вывести в ТОП, как мой на втором месте по этому запросу. И будет нам всем счастье! Я вот вывел, уже за 5 месяцев порядка 8000 просмотров, а счетчик только сегодня поставил.
Пока скрытый от глаз гостей из поиска.
И вопрос в догонку к Михаилу, как бы попроще сделать, чтобы страницы тоже считал хотя бы в админке, а то только записи считает.
Заранее спасибо.
…я подобным вопросом не задавался (у меня мало страниц, да и те сопутствующие – в принципе, просмотры не важны) …и заказчики мне пока что не заказывали подобную фичу.
Так что…
…так что придумаем на днях что-нить.
Да у меня тож мало, но некоторые хотелось бы отслеживать.
Буду ждать, спасибо.
Приветствую Михаил!
Такое вот наблюдение за счетчиком и вопрос по нему.
Даже при обновлении страницы, находясь на записи, счетчик срабатывает и цыфирь меняется, как на записи, так и в панели WP.
При просмотре статистики в Яд.Метрике сейчас вечером, отмечено, что данную запись (условно говоря) посетили за сутки 50 раз, а в панели wp стоит общая цифра 30, причем за несколько дней, так как счетчик установлен вроде уже третий день.
Жаль нельзя приложить скрины, было бы наглядней.
Почему такое происходит с подсчетом посещений?
Заранее спасибо.
Привет-привет!..
– такого быть не должно!..
Настройки установили??
Какие-то незначительные погрешности в любом случае будут… но чтоб 50 против 30 это перебор…
Скрины здесь можно бросать:
//prnt.sc/
$meta_key = 'views';
$who_count = 0;
$exclude_bots = 0;
То есть для всех, включая боты.
Чо то не догнал на счет скринов :(
Насчёт настроек кода – смотрите в комментариях к коду: лучше исключить ботов и пр. то есть поставьте 1.
2 – Адрес ресурса, на котором можно делиться скриншотами.
Поставил 1 везде, завтра к вечеру отпишусь.
Может, у вас есть код, чтобы я видела в админке или как -нибудь количество, но проблема, что у нас старая тема и нельзя поставить туда wp-head, поэтому нужен старый код без вп хеда чтоб. Тему я не могу поменять, это не мой сайт. а ложится при подклчючении вп хед, слайдер и некоторые страницы(стили).
Этот код только для ВП.
На других движках (или самописных) сайтах нужно решать задачу конкретно в коде… По обстоятельствам, так сказать…
Я знаю, что это за код. Я говорю, мне нужно для старой темы вп, где нет вп хеда еще. Чтоб он не обращался вообще к нему.