Sozdaiblog.ru
Назад

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

Опубликовано: 23.12.2013
Время на чтение: 5 мин
23
0

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

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

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

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

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

Поделиться
Похожие записи
Комментарии:
  • Сергей
    Опубликовано: 24.12.2013 Ответить на сообщение

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

    • Денис Черников
      Опубликовано: 24.12.2013 Ответить на сообщение

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

  • Шишов Антон Junk-nnru
    Опубликовано: 24.12.2013 Ответить на сообщение

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

    • Денис Черников
      Опубликовано: 24.12.2013 Ответить на сообщение

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

  • Андрей
    Опубликовано: 24.12.2013 Ответить на сообщение

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

    • Денис Черников
      Опубликовано: 24.12.2013 Ответить на сообщение

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

      • Шишов Антон Junk-nnru
        Опубликовано: 24.12.2013 Ответить на сообщение

        Даже без плагина все равно идет большая нагрузка на сервер, ведь при загрузке страница одним пользователем необходимо (в пределах БД):
        1) извлечь поле с количеством просмотров;
        2) увеличть на 1;
        3) перезаписать поле;
        А при большом потоке, хотя бы 500 человек в час, все время работы базы увеличится > больше чем в 500 раз.
        К тому же не у всех серверы, а лишь хостинги (места на серверах), у которых режим реального времени.
        Поэтому счетчик разумно ставить тем:
        1) кто имеет малый трафик на сайт;
        2) у кого выделенный сервер.

        • Денис Черников
          Опубликовано: 24.12.2013 Ответить на сообщение

          Извините, но это полный бред!
          У меня есть ресурс, где посещаемость 3000 человек и он находится на самом простом и дешёвом хостинге и никакой нагрузки от этого на нём нет!
          Тем более чтобы на сайт в течении часа 500 человек зашло на простом хостинге? Покажите хоть один сайт на шаре, где в час по 500 человек прилипает?!
          А у кого такое возможно (порталы, форумы) то естественно они давно все на VPS.
          Что же касаемо стандартных блогов, где 2000—3000 посетителей, то ни о какой нагрузки от этого и речи нет. Так что не морочьте людям голову!

          • Шишов Антон Junk-nnru
            Опубликовано: 24.12.2013 Ответить на сообщение

            I) Цифра 500 чел / час была взята для примера, чтобы показать картину целиком в красках.
            II) Если даже у вас на самом дешевом хосте нет загрузки, значит:
            1)сайты расположенные с вами на одном сервере мало посещаемые, которые практически не потребляют ресурсы сервера, которые, как я писал выше, распределяются в режиме реального времени
            2) либо они используют отличный от вашего MySQL сервер
            Вот если хотя бы часть сайтов, с которыми вы соседствуете на сервере будут иметь такие же показатели как у вас 2000 — 3000 чел/сутки, то уже тогда будет заметно увеличение отклика сайта.
            Я веду к тому, что устанавливая различные приблуды, которые хоть в какой-то степени нагружают системы, стоит думать о будущем.

          • Денис Черников
            Опубликовано: 24.12.2013 Ответить на сообщение

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

  • Екатерина
    Опубликовано: 22.01.2014 Ответить на сообщение

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

    • Денис Черников
      Опубликовано: 22.01.2014 Ответить на сообщение

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

  • Ольга
    Опубликовано: 28.01.2014 Ответить на сообщение

    Добрый день!
    Вот хочу этот счетчик поставить и хотела спросить, этот кусочек
    add_action ('wp_head', 'sozdaiblog_postviews');
    function sozdaiblog_postviews () {
    здесь написано название вашего блога, это надо так и оставить или надо менять на свое.

    • Денис Черников
      Опубликовано: 28.01.2014 Ответить на сообщение

      Здравствуйте!
      Ничего менять не нужно.

      • Ольга
        Опубликовано: 28.01.2014 Ответить на сообщение

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

        • Денис Черников
          Опубликовано: 29.01.2014 Ответить на сообщение

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

  • Олег
    Опубликовано: 04.07.2014 Ответить на сообщение

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

    • Денис Черников
      Опубликовано: 07.07.2014 Ответить на сообщение

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

  • андрей
    Опубликовано: 15.03.2015 Ответить на сообщение

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

  • Николай
    Опубликовано: 25.03.2015 Ответить на сообщение

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

    • Денис Черников
      Опубликовано: 04.04.2015 Ответить на сообщение

      Это не ко мне!

  • Владимир
    Опубликовано: 30.03.2015 Ответить на сообщение

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

    • Денис Черников
      Опубликовано: 04.04.2015 Ответить на сообщение

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

Имя
Укажите своё имя и фамилию
E-mail
Без СПАМа, обещаем
Текст сообщения
Отправляя данную форму, вы соглашаетесь с политикой конфиденциальности и правилами нашего сайта.