Хорошего настроения всем читателям – Sozdaiblog.ru!
В этом посте я покажу, как сделать счётчик количества просмотров каждой статьи в отдельности на Вашем сайте или блоге.
Перед тем как приступить к реализации данной функции скажу пару слов о том, кому и для чего это может понадобиться.
Конечно, первое ради чего на сайт прикручивают такой наворот – это обычный человеческий интерес, который проявляется в желании знать, сколько же раз люди посмотрели опубликованную статью.
Ну а для более продвинутых Веб-мастеров, данная фишка является необходимым вспомогательным инструментом для реализации нового функционала на их сайте. Об этом мы обязательно поговорим в одном из ближайших постов.
Думаю, что достаточно уже разговоров, давайте действовать.
Итак.
Как сделать счётчик количества просмотров каждой статьи?
Первое что Вам нужно сделать, это открыть для редактирования файл functions.php, который находится в папке с Вашей активной темой оформления сайта и в самом конце вставить следующий код:
/* Подсчет количества посещений страниц ---------------------------------------------------------- */ add_action('wp_head', 'sozdaiblog_postviews'); function sozdaiblog_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; }
После этого всё в той же папке с темой находим файл single.php, который отвечает за вывод отдельных постов в WordPress, открываем для редактирования и в необходимое место (там, где нужно вывести счётчик) вставляем такой код:
Просмотров: <?php echo get_post_meta ($post->ID,'views',true); ?>
В большинстве случаев счётчик количества просмотров страниц вставляют после заголовка поста (тег H1).
Но, это решать уже Вам.
Выглядеть это будет примерно так:
На сегодня у меня всё, всем удачи и до следующих постов!
С уважением, Денис Черников!
Это старая тема, у себя только в админке сделал, чтобы самому смотреть. И код вроде Камы вроде.
Кому старая, а кому полезная! Весь код в интернете чей-нибудь!
Денис, стоит дополнить, что при наличии на сайте КЕШирующих плагинов, могут возникнуть конфликты, поэтому стоит либо их отключить, либо постоянно чистить кеш.
Я больше не работаю с плагинами КЭШирования, поэтому не в курсе подобной проблемы! Но если это так, то пусть Ваш комментарий будет этакой напоминалкой! Спасибо!
я раньше ставил плагин для количества просмотров, но убрал потому что прочитал, что он перегружает бд, на мой взгляд лучше установить рейтинг звезд, чтоб посетители могли ставить оценку посту
Не слышал о таком! Попробуйте без плагина! Количество просмотров и рейтинг звёзд, это немного разные вещи!
Даже без плагина все равно идет большая нагрузка на сервер, ведь при загрузке страница одним пользователем необходимо (в пределах БД):
1) извлечь поле с количеством просмотров;
2) увеличть на 1;
3) перезаписать поле;
А при большом потоке, хотя бы 500 человек в час, все время работы базы увеличится > больше чем в 500 раз.
К тому же не у всех серверы, а лишь хостинги (места на серверах), у которых режим реального времени.
Поэтому счетчик разумно ставить тем:
1) кто имеет малый трафик на сайт;
2) у кого выделенный сервер.
Извините, но это полный бред!
У меня есть ресурс, где посещаемость 3000 человек и он находится на самом простом и дешёвом хостинге и никакой нагрузки от этого на нём нет!
Тем более чтобы на сайт в течении часа 500 человек зашло на простом хостинге? Покажите хоть один сайт на шаре, где в час по 500 человек прилипает?!
А у кого такое возможно (порталы, форумы) то естественно они давно все на VPS.
Что же касаемо стандартных блогов, где 2000—3000 посетителей, то ни о какой нагрузки от этого и речи нет. Так что не морочьте людям голову!
I) Цифра 500 чел / час была взята для примера, чтобы показать картину целиком в красках.
II) Если даже у вас на самом дешевом хосте нет загрузки, значит:
1)сайты расположенные с вами на одном сервере мало посещаемые, которые практически не потребляют ресурсы сервера, которые, как я писал выше, распределяются в режиме реального времени
2) либо они используют отличный от вашего MySQL сервер
Вот если хотя бы часть сайтов, с которыми вы соседствуете на сервере будут иметь такие же показатели как у вас 2000 — 3000 чел/сутки, то уже тогда будет заметно увеличение отклика сайта.
Я веду к тому, что устанавливая различные приблуды, которые хоть в какой-то степени нагружают системы, стоит думать о будущем.
Антон, если таких приблуд стоит в количестве, как новогодние шары на ёлке, то будь Вы хоть один на хосте, сами же свой сайт повесите только одними обращениями со своего IP адреса.
Нужно знать меру во всём и не лепить просто, чтобы было.
Применяя инструменты с умом ничего страшного не будет!
А на счёт хостинга, то все его ресурсы распределяются равномерно для каждого сайта и не важно сколько расходует именно Ваш сайт. Вам всё равно не дадут их украсть у других, поэтому теория с потреблением ресурсов отпадает.
Скажите, Денис, вот поставлю я счетчик, и он начнёт считать… Но ведь он будет считать с момента установки. И получится, что как будто бы мои статьи вообще мало кто просматривал за все время их появления на сайте…
Да, Екатерина! Счёт начнётся с момента установки!
Добрый день!
Вот хочу этот счетчик поставить и хотела спросить, этот кусочек
add_action ('wp_head', 'sozdaiblog_postviews');
function sozdaiblog_postviews () {
здесь написано название вашего блога, это надо так и оставить или надо менять на свое.
Здравствуйте!
Ничего менять не нужно.
Спасибо вам) Счетчик отлично работает, красотень)
Я с помощью ваших советов уже пол сайта настроила. Спасибо вам)
Пожалуйста, Ольга! Обращайтесь!
Подскажите, а как выдернуть из базы количество просмотров от плагина WP-PostViews, что бы те старые просмотры сюда вставить и не начинать все с 0?
Не задумывался об этом, не знаю! Скорее всего никак! Хотя, нет ничего не возможного!
Следует отметить, что обновления страницы админом в счет просмотров не входит))
Я поставил счетчик на своих двух сайтах. На одном отображается количество просмотров страниц за весь период работы сайта (и старые и новые), а на втором — только те, которые были при бытности плагина, то есть все до декабря месяца 2014 г, дальше счетчик не работает. Что делать, Денис?
Это не ко мне!
Спасибо Денис! Очень помогло…
Пожалуйста, заходите!