mojwp.ru
Назад

Счетчик просмотров статьи на WordPress без плагина

Опубликовано: 20.08.2011
75
12071

как вывести количество просмотров статьиРешить задачу вывода количества просмотров статей можно решить двумя способами: с помощью плагина и вмешательством в код вашей темы. Сегодня предлагаю решить поставленную задачу с помощью вмешательства в код. Все манипуляции займут порядка минуты.

В результате на вашем сайте в выбранном месте отобразится цифра просмотренных раз данной статьи.

Открываем functions.php (лежит в шаблоне вашего сайта) и добавляем следующий код:

function getPostViews($postID){
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
        return "0 просмотров";
    }
    return $count.' просмотров';
}
function setPostViews($postID) {
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
        $count = 0;
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '0');
    }else{
        $count++;
        update_post_meta($postID, $count_key, $count);
    }
}

Здесь представлены две функции: одна фиксирует просмотры, вторая выводит количество этих просмотров.

Теперь осталось эти функции прописать в нужном вам месте.

Фиксирующую функцию прописываем там, где будете считать просмотры: single.php, page.php, index.php и прочее:

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

Помимо этого вы можете смотреть количество просмотров прямо в админке вашего сайта. Для этого нужно в functions.php добавить следующее:

add_filter('manage_posts_columns', 'posts_column_views');
add_action('manage_posts_custom_column', 'posts_custom_column_views',5,2);
function posts_column_views($defaults){
    $defaults['post_views'] = __('просмотров');
    return $defaults;
}
function posts_custom_column_views($column_name, $id){
    if($column_name === 'post_views'){
        echo getPostViews(get_the_ID());
    }
}

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

Автор:
Виталий
Поделиться
Похожие записи
Черкани пару строк
  • Иван
    Опубликовано: 04.02.2012 Ответить на сообщение

    Спасибо! Все работает! Вмешательством в код, думаю, лучше чем с помощью плагина - функционально и ничего лишнего.

  • Михаил
    Опубликовано: 18.04.2012 Ответить на сообщение

    А можно поподробне рассказать о том как именно прописывать Фиксирующую функцию? и откуда она приобрел атакой хитрый цифробуквенный вид?

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

      да, был какой-то глюк и плагин не отработал правильное отображение кода. Теперь исправлено.
      Просто прописываете где-нибудь в выбранном файле сверху, чтобы счетчик просмотров стал активным. Можно где-нибудь вначале файла.

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

        Спасибо большое. Подскажите пожалуйста, как сделать сортировку по просмотрам в записях? Мне очень нужен программист на сайт. Как с вами связаться?

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

          Добрый день.
          К сожалению, со мной никак не свяжитесь: я нигде не оставляю свои контакты.

          • Максим
            Опубликовано: 27.09.2014 Ответить на сообщение

            "как сделать сортировку по просмотрам в записях?", меня тоже этот вопрос интересует. Как сделать сортировку по полю записи?

  • Роман
    Опубликовано: 20.07.2012 Ответить на сообщение

    Спасибо за статью, полезный код, пригодился. все проверено,работает.

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

    mojWP, а у меня возникли неполадки - видимо счетчик не правильно считает - при каждом просмотре статьи добавляет + 2 просмотра.

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

    Можешь помочь разобраться?! Заранее спасибо!

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

      прошу прощения, но как я могу это сделать не видя процесса установки и работы???
      или мне телепатически будет передана информация? когда готовиться к приему?

    • Korban;D
      Опубликовано: 06.02.2014 Ответить на сообщение

      Приветствую! Такая же проблема, считает по два просмотра за один.((

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

      Тоже +2 просмотра сразу. Что делать?

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

    да, точно! Ход действий, согласно описному в статье выше, алгоритму. Не знаю, в комментариях у вас можно использовать html теги, посему даю ссылку на тему, на форуме: goo.gl/tMS8N, обсудим здесь в комментариях.

    Я постарался максимально подробно изложить суть проблемы. Хотя могу еще добавить: Дабы исключить вероятность ошибки использования решения, - отдельно поставил чистый WP 3.4.1 с шаблонов Твенти Элевен, который не редактировался, - в таких условиях ошибка тоже была...

    Так что очень рассчитываю на помощь! Заранее, Спасибо!

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

    Виталий, получается, что если счетчик поставить на блог, которому уже полгода, то все просмотры до установки естественно засчитаны не будут? А может где-то в базе хранятся данные о количестве просмотров их можно как-то достать?

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

      да, считаться старые не будут и выдернуть их из базы не получится, т.к. ранее не было команды подсчета (что весьма логично)

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

        Эх, жалко... Начинать с нуля, когда старые публикации имеют каждая под 5 тыс. просмотров как-то жаба душит ))

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

    Виталий! Поставил ваш код, но он почему-то учитывает только мои просмотры. Это может быть из-за включенного модуля кэширования Hyper Cache? если да - возможно ли это обойти

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

      все правильно - из-за кеша не работает. решайте что важнее.
      динамика не может в статике отображаться.
      решение сейчас с ходу не подскажу.

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

    Чтото я не вижу этого счетчика на этой страничке, казалось бы логичным чтобы у автора на блоге висел свой счетчик, не? Автор брезгует использовать свои программки?

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

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

      • Роман llgr
        Опубликовано: 20.03.2015 Ответить на сообщение

        Для таких случаев нужен рейтинг комментариев) Лайк)

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

    Все проверено! Работает! Большое спасибо автору!
    P.S Не подскажите ещё как реализовать подобную как у Вас систему комментариев? Может плагин подскажите. Заранее благодарен!

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

      реализовывать ничего не нужно. В стандартных настройках wordpress сделать древовидные комментарии

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

    Спасибо! Очень пригодился код.

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

    Здравствуйте. Действительно, у меня все получилось! Спасибо Вам за эту статью!
    Подскажите пожалуйста, как вывести еще колонку тайтл и дискрипшн в админке (у меня в теме в админке их нет). И как вывести в коде считалку знаков (ее тоже у меня нет, т.к. не пользуюсь плагином ол-сео-пак, так как все его функции прописаны в коде, кроме подсчета количества символов).

    Заранее благодарю Вас.

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

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

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

    Здравствуйте! А как это решение реагирует на поисковых ботов? Учитывает ли оно их? Ответьте пожалуйста.

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

      Добрый день.
      Не реагирует. Не учитывает.

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

        Спасибо! Ваше решение мне нравится больше, чем у Камы.

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

    Здравствуйте! А, как сделать "Просмотры: [число]"?
    П.С. Коверкал functions.php - но не вышло...
    Благодарю за ответ!

    • Максим
      Опубликовано: 24.09.2013 Ответить на сообщение

      Только что нашел ответ на твой вопрос:
      return "0 просмотров";
      здесь поменяй как нужно (это отображение при нуле просмотров)

      return $count.' просмотров';
      А здесь замени таким образом:
      return 'Просмотров: '.$count;

      И готово)

      • От души!
        Опубликовано: 24.09.2013 Ответить на сообщение

        Благодарю, Максим!
        А также Автора, всем успехов!

  • Максим
    Опубликовано: 24.09.2013 Ответить на сообщение

    Не по теме: Кстати, не знаете, почему у меня часто перестает отображаться какая-либо буква алфавита русская, зачастую буква Я и на всех компьютерах, а потом через время сама возвращается... Не знаете, от чего это может быть?

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

    Здравствуйте, Спасибо за код, подскажите как сделать еще страницу топ (к примеру) 50 просмотров?

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

      Подскажу. Но в комментарий не поместится все. Поэтому попробуйте погуглить с таким запросом "Функция вывода записей по количеству просмотров" и все найдете))

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

    Спасибо все работает.Но может еще подскажешь, как сделать что в админке показывались и просмотры из page, а не только single. Спасибо еще раз.

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

    Спасибо! Все работает! Правда убрать счетчики обратно - не получается (

    с single-s-right.php - убрал, а вот со страртовой не могу(

  • Костов Игорь
    Опубликовано: 17.04.2014 Ответить на сообщение

    Всё работает! Автору спасибо. Код добавить проще, чем ставить плагин. И нагрузка на сайт минимальна.

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

    Скажите пожалуйста как перенести счетчик на другую тему не потеряв количество просмотров?

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

      Взять и перенести коды

  • Вася
    Опубликовано: 29.04.2014 Ответить на сообщение

    число просмотров показывает не верно!
    по яндексу за сутки около 200 просмотров одной страницы, а в админке 20 )) на сайте я не вывожу
    сайт еще не проиндексирован, все переходы на страницу были по ссылке с ютуб.
    такие пироги

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

    Здравствуйте! Спасибо за код! Подскажите пожалуйста, как сделать в админке колонку просмотров сортируемой, как к примеру у (заголовок, комментарии, дата)? Зараннее спасибо на ответ.

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

      Специалист молчит, значит не знает.

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

    Добрый день. Все установил, все работает, за исключением колонки боковой. Счетчик на странице записей (статей) считает, а колонки в административной панели нет? В чем причина? Заранее спасибо!

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

    Спасибо все работает!

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

    подскажите как добавить к этому иконку глаза ?

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

      Вставить соответствующую картинку рядом.
      Картинку ищите в сети, а вставлять

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

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

    поставил код но у меня не считает просмотры и подскажите как поменять местами
    0 ПРОСМОТРОВ на ПРОСМОТРОВ 0 ?

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

      было уже выше

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

    слова поменял а просмотры так и не считает ? в чем причина

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

      Беда...
      Пойду запишусь на курсы экстрасенсов. Обождите несколько месяцев.

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

    Как считать уникальные просмотры, т.е. не считать просмотры при обновлении страницы?
    (считать по ip или через куки)
    Необходимо, чтобы пользователи искусственно не накручивали просмотры- обновляя страницу.
    Не могу найти решение.

  • Саша
    Опубликовано: 02.03.2015 Ответить на сообщение

    Хорошая статья, спасибо!

  • Роман llgr
    Опубликовано: 20.03.2015 Ответить на сообщение

    Добрый день.
    Всё получилось.
    Основной код (Ваш):

    /* ПРОСМОТРЫ СТАТЕЙ mojwp.ru/prosmotry-statei.html
    /* вывод кол-ва просмотров */
    function getPostViews($postID){
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
    delete_post_meta($postID, $count_key);
    add_post_meta($postID, $count_key, '0');
    return "0"; }
    return $count.'';}
    /* регистрируем просмотр */
    function setPostViews($postID) {
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
    $count = 0;
    delete_post_meta($postID, $count_key);
    add_post_meta($postID, $count_key, '0');
    }else{
    $count++;
    update_post_meta($postID, $count_key, $count); }}
    /* вывод кол-ва просмотров в админку */
    add_filter('manage_pages_columns', 'posts_column_views');
    add_action('manage_pages_custom_column', 'posts_custom_column_views',10,2);
    add_filter('manage_posts_columns', 'posts_column_views');
    add_action('manage_posts_custom_column', 'posts_custom_column_views',10,2);
    function posts_column_views($defaults){
    $defaults['post_views'] = __('Просмотры');
    return $defaults;}
    function posts_custom_column_views($column_name, $id){
    if($column_name === 'post_views'){
    echo getPostViews(get_the_ID()); }}
    /*--------------------------------------*/

    Хочется добавить возможность сортировки по столбцу в админке.
    Попробовал так:

    /* добавляем возможность сортировать колонку */
    add_filter('manage_edit-post_sortable_columns', 'add_views_sortable_column');
    function add_views_sortable_column($sortable_columns){
    $sortable_columns['post_views'] = 'views_views';
    return $sortable_columns;}

    Появляется возможность сортировать по колонке, при нажатии строка имеет вид:
    /wp-admin/edit.php?orderby=views_views&order=desc
    Но по сути сортировка происходит не по полю "Просмотры", а по полю "Дата".

    В чем может быть проблема?
    Благодарю за ответ.

    • Роман llgr
      Опубликовано: 20.03.2015 Ответить на сообщение

      Я правильно воспользовался конструкцией PRE? вроде делал как написано внизу

  • tea-trance
    Опубликовано: 27.07.2015 Ответить на сообщение

    Замечательное решение! куда лучше чем с плагином)

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

    Класс! Все работает! Только я не стала устанавливать счетчик просмотров записей для всех, а добавила лишь для себя - в админке. Очень удобно анализировать особенно для оценки просмотров новых записей. Можно оценить лояльность постоянной аудитории.

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

    Доброго времени суток. Как сделать что бы просмотр считался по браузерам или лучше по ip, а не по переходам на страницу? зашел в статью, отредактировал, посмотрел, обновил и уже +3 просмотра.

  • Татьяна
    Опубликовано: 23.11.2015 Ответить на сообщение

    доброго времени суток! скажите пожалуйста, это работает только в рамках одного конкретного шаблона? если шаблон меняется, то просмотры теряются? Ведь мы в тему заново прописываем эти функции..

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

      Да, одного

  • Анастасия
    Опубликовано: 17.02.2016 Ответить на сообщение

    Здравствуйте! Скажите пожалуйста, а как вставить код в начало статьи? Где найти начало записей?

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

      Ищите по коду функции the_content и перед ней

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

    Моя благодарность за коды, работает

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

    Спасибо, установил!

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

    Спасибо! Отличный пост!
    Присоединяюсь к вопросу по возможности сортировки постов по кол-ву просмотров.
    Есть решение?

    Спасибо.

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

    Все работает, автору мерси!

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

    Столкнулся с проблемой:
    Если человек не авторизован на моём сайте, то его просмотр не засчитывается. Кто еще сталкивался с такой же проблемой? Как быть?

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

    День добрый. А как вывести кол-во просмотров в анонсе статьи?

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

    Доброго времени суток, Виталий.
    Я натягивал свою разметку на движок и над данным вопросом парился где-то часа 2-3 и ни один из предложенных вариантов в инете не помог. Только ваш код. Спасибо вам большое!!!

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

    а как применить стили к этому делу? поставил картику и пришлось прописывать стиль прямо в html

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

    У кого увеличивает счетчик на 2, значит в вашей теме уже встроен подсчет просмотров и вам нужно только метод для вывода этого счетчика, метод увеличения встраивать не нужно.

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

    Реально спасибо! Наконец то сделал то что давно искал. Пришлось чуть подкорректировать конечно вставку, И самому разобраться куда вставлять код. Так что это дополнение было бы полезным. А также как иконку привязать к отображению количества просмотров. А то у меня голая надпись получилась. Но это уже решение! Спасибо

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

    А можно ли указать число, с которого будет идти отсчет. И для каждой статьи индивидуально это сделать?

  • даня
    Опубликовано: 13.03.2021 Ответить на сообщение

    привет! скажи, а как сделать, чтобы игнорировались просмотры админа? спасибо!

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

    Благодарю всё работает!

    Только я заменил слово 'просмотров' на знак глаза '&#x1F441' в хром отображается чётко

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

    Благодарю. Наконец-то рабочий код.

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