ГлавнаяВёрстка WordPress › Как сделать счётчик количества просмотров каждой статьи?


Как сделать счётчик количества просмотров каждой статьи?


Как сделать счётчик количества просмотров каждой статьи?Хорошего настроения всем читателям – 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).

Но, это решать уже Вам.

Выглядеть это будет примерно так:


Как сделать счётчик количества просмотров каждой статьи?

На сегодня у меня всё, всем удачи и до следующих постов!

С уважением, Денис Черников!




Сделайте, пожалуйста, доброе дело, расскажите о блоге своим друзьям:




23 комментарияА что думаете Вы?

  1. Сергей

    Это старая тема, у себя только в админке сделал, чтобы самому смотреть. И код вроде Камы вроде.

    [Ответить]

    Денис Черников ответил:

    Кому старая, а кому полезная! Весь код в интернете чей-нибудь!

    [Ответить]

  2. Шишов Антон [Junk-nn.ru]

    Денис, стоит дополнить, что при наличии на сайте КЕШирующих плагинов, могут возникнуть конфликты, поэтому стоит либо их отключить, либо постоянно чистить кеш.

    [Ответить]

    Денис Черников ответил:

    Я больше не работаю с плагинами КЭШирования, поэтому не в курсе подобной проблемы! Но если это так, то пусть Ваш комментарий будет этакой напоминалкой! Спасибо!

    [Ответить]

  3. Андрей

    я раньше ставил плагин для количества просмотров, но убрал потому что прочитал, что он перегружает бд, на мой взгляд лучше установить рейтинг звезд, чтоб посетители могли ставить оценку посту

    [Ответить]

    Денис Черников ответил:

    Не слышал о таком! Попробуйте без плагина! Количество просмотров и рейтинг звёзд, это немного разные вещи!

    [Ответить]

    Шишов Антон [Junk-nn.ru] ответил:

    Даже без плагина все равно идет большая нагрузка на сервер, ведь при загрузке страница одним пользователем необходимо (в пределах БД):

    1) извлечь поле с количеством просмотров;

    2) увеличть на 1;

    3) перезаписать поле;

    А при большом потоке, хотя бы 500 человек в час, все время работы базы увеличится > больше чем в 500 раз.

    К тому же не у всех серверы, а лишь хостинги (места на серверах), у которых режим реального времени.

    Поэтому счетчик разумно ставить тем:

    1) кто имеет малый трафик на сайт;

    2) у кого выделенный сервер.

    [Ответить]

    Денис Черников ответил:

    Извините, но это полный бред!

    У меня есть ресурс, где посещаемость 3000 человек и он находится на самом простом и дешёвом хостинге и никакой нагрузки от этого на нём нет!

    Тем более чтобы на сайт в течении часа 500 человек зашло на простом хостинге? Покажите хоть один сайт на шаре, где в час по 500 человек прилипает?!

    А у кого такое возможно (порталы, форумы) то естественно они давно все на VPS.

    Что же касаемо стандартных блогов, где 2000—3000 посетителей, то ни о какой нагрузки от этого и речи нет. Так что не морочьте людям голову!

    [Ответить]

    Шишов Антон [Junk-nn.ru] ответил:

    I) Цифра 500 чел / час была взята для примера, чтобы показать картину целиком в красках.

    II) Если даже у вас на самом дешевом хосте нет загрузки, значит:

    1) сайты расположенные с вами на одном сервере мало посещаемые, которые практически не потребляют ресурсы сервера, которые, как я писал выше, распределяются в режиме реального времени

    2) либо они используют отличный от вашего MySQL сервер

    Вот если хотя бы часть сайтов, с которыми вы соседствуете на сервере будут иметь такие же показатели как у вас 2000 — 3000 чел/сутки, то уже тогда будет заметно увеличение отклика сайта.

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

    [Ответить]

    Денис Черников ответил:

    Антон, если таких приблуд стоит в количестве, как новогодние шары на ёлке, то будь Вы хоть один на хосте, сами же свой сайт повесите только одними обращениями со своего IP адреса.

    Нужно знать меру во всём и не лепить просто, чтобы было.

    Применяя инструменты с умом ничего страшного не будет!

    А на счёт хостинга, то все его ресурсы распределяются равномерно для каждого сайта и не важно сколько расходует именно Ваш сайт. Вам всё равно не дадут их украсть у других, поэтому теория с потреблением ресурсов отпадает.

  4. Екатерина

    Скажите, Денис, вот поставлю я счетчик, и он начнёт считать... Но ведь он будет считать с момента установки. И получится, что как будто бы мои статьи вообще мало кто просматривал за все время их появления на сайте...

    [Ответить]

    Денис Черников ответил:

    Да, Екатерина! Счёт начнётся с момента установки!

    [Ответить]

  5. Ольга

    Добрый день!

    Вот хочу этот счетчик поставить и хотела спросить, этот кусочек

    add_action ('wp_head', 'sozdaiblog_postviews');

    function sozdaiblog_postviews () {

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

    [Ответить]

    Денис Черников ответил:

    Здравствуйте!

    Ничего менять не нужно.

    [Ответить]

    Ольга ответил:

    Спасибо вам) Счетчик отлично работает, красотень)

    Я с помощью ваших советов уже пол сайта настроила. Спасибо вам)

    [Ответить]

    Денис Черников ответил:

    Пожалуйста, Ольга! Обращайтесь!

    [Ответить]

  6. Олег

    Подскажите, а как выдернуть из базы количество просмотров от плагина WP-PostViews, что бы те старые просмотры сюда вставить и не начинать все с 0?

    [Ответить]

    Денис Черников ответил:

    Не задумывался об этом, не знаю! Скорее всего никак! Хотя, нет ничего не возможного!

    [Ответить]

  7. андрей

    Следует отметить, что обновления страницы админом в счет просмотров не входит))

    [Ответить]

  8. Николай

    Я поставил счетчик на своих двух сайтах. На одном отображается количество просмотров страниц за весь период работы сайта (и старые и новые), а на втором — только те, которые были при бытности плагина, то есть все до декабря месяца 2014 г, дальше счетчик не работает. Что делать, Денис?

    [Ответить]

    Денис Черников ответил:

    Это не ко мне!

    [Ответить]

  9. Владимир

    Спасибо Денис! Очень помогло...

    [Ответить]

    Денис Черников ответил:

    Пожалуйста, заходите!

    [Ответить]

Оставить комментарий!

Вверх