Создание и улучшение интерфейса сайта – процесс практически бесконечный. Хочется сделать все лучше и лучше. В данном посте мы поговорим о количестве просмотров поста. Нам надо встроить счетчик , который позволит считать числа просмотров ваших записей или страниц.
I Способ Плагин – PostView
Если выбирать плагины для подсчета просмотров, по наибольшей простоте это wp-postviews.
Плагин WP-PostViews
Установка:
- Вы можете поместить его в archive.php, single.php, post.php или page.php а также CustomPostType.php.
- Найти например:
<?php while (have_posts()) : the_post(); ?>
- И вставить данный код:
<?php if(function_exists('the_views')) { the_views(); } ?>
II Способ Количество просмотров – PostView
Это способ ручной правки шаблона. И поможет нам в этом Kama.
Ссылка на решение от Kama
Вот функция, которую вставить в файл functions.php вашей темы (шаблона) на WordPress.
[crayon lang=”php”]/* Подсчет количества посещений страниц
———————————————————- */
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;
}[/crayon]
а этот код вставляем где нужно вывести число просмотров:
Просмотров: <?php echo get_post_meta ($post->ID,'views',true); ?>
Мы достигли своего результата 2 способами, выбирайте какой вам больше нравится.
23 комментария
Отличная статья. У меня есть блог на wordpress, как раз хотел на него поставить счетчик посещений, теперь я понял как это сделать благодаря данному материалу. Буду пробовать, спасибо.
С недавноего времени отказался от использования этого плагина на главной. Только в постах.
Он достаточно замедляет работу сайта. Если его отключить, сайте будет реально быстрее гонять.
Это плагин, а тут показано как сделать без плагина. Разумеется осуществляется лишние запросы в БД и это не вовсе не тормозит сайт. Каждый должен сам расценивать для себя применимость этой доработки, нужна она ему или нет.
А такой “электро-счетчик” у кого-нибудь уже стоит или это просто красивая картинка была (и + оригинальная идея)
А на этом блоге посмотреть не судьба, а будете флудить будете забанены.
Не знаю что не так. Но счетчик не работает. Я уберу эту функцию вообще если подсчет будет вестись с нуля (как будто сайт только что родился), но страничку обновила и не фига. Вообще пусто. Делала вторым способом. В чем может быть причина?
Игорь, а почему у Вас данные не запоминаются в графах: имя, сайт, мейл?
1. Счет начинается вестись с нуля как только вы установите данный хак.
2. Комментарии подправил, сейчас должно работать нормально. Это все последствие кэш maxsite-cache.
Да, вижу что заработал счетчик. Оставлю наверное – в таком месте удалось хорошем внедрить, мне не мешает. Но так мало просмотров – аж плакать хочется. Я то думала это будет интересно. Заходит 300 человек в день и кол-во просмотров на свежей статье (популярной по содержанию) всего 3.
Спасибо, теперь вручную заводить не надо сайт и т.д. – все на месте 🙂
Поставить поставила я этот код, показывает, но как работает мне не нравится. Подозреваю, что не все просмотры он фиксирует. Вот вам свежий пример сегодня полученный. Выпустила статью. Сделал 2 твита сама. Показывает через часа три после выпуска всего один просмотр, но 11 твитов!!! Вот вопрос откель твиты взялись, если никто кроме меня не смотрел???? Так же и по другим постам, посещалка около 400 уников в день, но я не вижу чтоб что-то смотрели судя по “просмотрщику”. Игорь, снова видео выпало из спойлера и закрывает полэкрана, если что-то можно сделать, то исправьте это недоразумение.
А вы второй код не ставьте сразу, а через недельку добавьте вот вам и будут циферки ненулевые.
Ну это же ерунда. Просто за неделю накопятся 😉 Да хоть через месяц, мне кажется неверно считается. Пример я описала выше.
По моему вы про код не поняли. Код то один, просто вариантов два. Первый вариант с плагинами, а второй с кодом. Я плагин не ставила, а сразу второй вариант использовала -в виде кода. Если что, мне эта функция кажется совсем не обязательной, но привлекательной, когда просмотры на тысячи тысяч идут 😉
Но как считает я пока не пойму.
У меня стоит плагин top 10, он тоже считает количество просмотров. Мне интересно если сделать с помощью кода подсчет просмотров, подхватит ли код те просмотры которые набрал плагин. А плагин удалить. Такое возможно?
Вряд ли. Данный метод создает отдельную таблицу в БД. Если только шаманить с базой.
Значит если я поставлю данный код в functions он не подерется с вышеназванным плагином?
Я точно не знаю с этим плагином не работал, попробуйте как я написал здесь.
У меня похожий вопрос. Стоял плагин WP PostViews, на некоторых статьях накопилось несколько десятков тысяч просмотров, но от плагина пришлось отказаться в борьбе с нагрузкой на сервер.
Как в этом коде, можно использовать данные плагина WP PostViews, (из БД) о просмотрах?
Попробуйте сюда вписать название вашей таблицы
Если удалить плагин удалятся ли в базе данных таблицы созданные им?
Вот этого я не знаю, возможно удалится. Сделайте бэкап этой таблицы.
У моего Друга стоял плагин и пару часов назад ое его удалил, а перед этим этот код вставил, потом плагин удалил и все записи остались на месте, зато на 1 плагин стало меньше.
Запомните дурак никогда не спрашивает, дурак себя всегда считает умным. Мой копирайт.
Тот кто спрашивает всегда выглядит нормальным, токо не всё знающим.
Уберите свою дуру, неэтично.
Евгений, это известное высказывание:
Это не значит, что я считаю своих читателей дураками. Это наоборот призыв не бояться показаться дураком(люди бывают разные и кто-то сильно стесняется) и задавать вопросы, даже если на их взгляд он кажется “дурацким”.
И как раз с вашей стороны неэтично писать такие комментарии.