Вывод популярных записей wordpress. Счетчик просмотров записей на WordPress: установка и настройка


Продолжая тему полезных улучшений для WordPress я расскажу Вам как учесть статистику посещения страницы и вывести количество просмотров записи .

Осуществить задуманное можно двумя способами:

1. Установить плагин стороннего разработчика WP-PostViews
2. Добавить несколько строк кода в шаблон WordPress

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

Выводим количество просмотров записи в WordPress с помощью плагина Wp-PostViews

Происходит как обычно. После установки плагин необходимо активировать.

Основные возможности плагина WP-PostViews:

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

Как видите, функционал плагина WP-PostViews совсем не маленький. Однако, не стоит забывать об основной его функции — сбор и выдача статистики по количеству просмотров записей и страниц. И сейчас мы посмотрим как данный плагин справляется с данной задачей.

Для этого нужно вставить следующий код

в нужное место в коде файла вашей темы.

К примеру, если вы хотите, чтобы количество просмотров отображалось на странице записи сразу после ее текста, нужно вставить код после функции вызова текста в файле single.php

Таким же образом можно вставить данный код в:

  • index.php — для вывода на главной странице;
  • page.php — для вывода на страницах;
  • archive.php — для вывода в архивах.

В настройках плагина

можно изменить некоторые функции.

Теперь о том, как использовать дополнительные функции плагина WP-PostViews.

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

Результат будет выглядеть следующим образом

По-умолчанию, выводится 10 самых просматриваемых записей. Для того, чтобы изменить это число, необходимо определить параметры в функции get_most_viewed .

Например, чтобы вывести список из пяти самых популярных записей изменяем код таким образом

Для вывода последних просмотренных записей нужно вставить следующий код

для вывода самых популярных записей по тегам —

для вывода самых популярных записей в категории —

.

Вывод количества просмотров записи в WordPress без плагина

Теперь рассмотрим второй способ вывода количества просмотров страницы с помощью вмешательства в код шаблона WordPress.

Добавим в файл functions.php следующий код

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

Код представляет две функции, одна из которых собирает статистику, а другая отвечает за ее вывод.

Следующим шагом нужно добавить в файлы (single.php, page.php и т.п.), в которых необходимо считать просмотры следующий код

и завершающим шагом вставляем код

Я, например, поместил данный код до текста записи. В итоге это выглядит так

Выводим количество просмотров записи в WordPress. Выводы

  • большой функционал;
  • вывод популярных записей (доплнительная перелиновка);
  • гибкие настройки;
  • периодические обновления.

Недостатки:

  • ограниченый функционал.

Достоинства:

Заключение: если ваш сервер позволяет увеличить нагрузку, то лучшим вариантом для вас будет установка плагина WP-PostViews, за счет его большого функциона, и дополнительной перелиновки. В противном случае воспользуйтесь вторым методом.

Страница плагина на wordpress.org.

А вот если ваши познания в языке программирования PHP еще слишком малы, вы можете найти много полезной информации на php форуме . Это поможет вам в дальнейшей работе с wordpress.

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

Пример такого кастомизированного отображения самых популярных постов приведен на следующем скриншоте:

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

Function wpb_set_post_views($postID) { $count_key = "wpb_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); } } //To keep the count accurate, lets get rid of prefetching remove_action("wp_head", "adjacent_posts_rel_link_wp_head", 10, 0);

Теперь после вставки функции на нужное место нам надо вызвать эту функцию для отдельных страниц с публикациями. Так функция будет "знать", какой из постов выбрать и дать ему наивысшую оценку на базе числа собранных просмотров. Для этой цели следующий код надо поместить в цикл для записей в файле single.php :

Wpb_set_post_views(get_the_ID());

Если вы используете дочернюю тему или просто хотите облегчить себе задачу, то просто добавьте отслеживающий параметр в заголовок поста при помощи wp_head . Добавьте следующий код в файл функций вашей темы под названием functions.php :

Function wpb_track_post_views ($post_id) { if (!is_single()) return; if (empty ($post_id)) { global $post; $post_id = $post->ID; } wpb_set_post_views($post_id); } add_action("wp_head", "wpb_track_post_views");

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

Примечание : Если вы используете кэширующий плагин, этот способ по умолчанию работать НЕ будет.

Мы используем плагин W3 Total Cache , в нем есть опция под названием "фрагментированное кэширование" (Fragmented Caching ). Вы тоже можете использовать этот плагин и данную опцию, чтобы все работало как следует. Вот что надо изменить:

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

Function wpb_get_post_views($postID){ $count_key = "wpb_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 View"; } return $count." Views"; }

Затем в цикл записи файла single.php добавьте следующий код:

Wpb_get_post_views(get_the_ID());

Если вы хотите отсортировать записи по количеству их просмотров, вы можете это легко сделать с помощью wp_query post_meta параметра. Простой пример такого цикла будет выглядеть вот так:

4, "meta_key" => "wpb_post_views_count", "orderby" => "wpb_post_views_count", "order" => "DESC")); while ($popularpost->have_posts()) : $popularpost->the_post(); the_title(); endwhile; ?>

Чтобы добавить другие параметры WP_Query (такие, как промежуток времени), воспользуйтесь рекомендациями из раздела WP_Query в Codex.

Надеемся, эти советы вам помогут.

Один из самых излюбленных способов улучшения поведенческих факторов на сайте — использование блока «Популярные записи». Он позволяет удержать внимание посетителя на самых интересных записях. В общем, это очень хорошо для продвижения вашего сайта.

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

Теория популярности

Обычно для реализации вышеуказанной задачи, разработчики прибегают к простому алгоритму: выводят публикации по количеству просмотров или комментариев. Больше просмотров/комментариев — больше популярность. Кажется, все просто и логично.

Но на мой взгляд, используя такой алгоритм ранжирования, мы допускаем небольшую ошибку. Дело в том, что в этом случае мы не учитываем фактор времени. Это значит, что публикация, предположим, размещенная на сайте год назад, скорее всего будет иметь больше просмотров или комментариев, чем размещенная вчера. Даже если новая объективно лучше и интереснее, чем более старая. Таким образом, старые публикации, по стечению обстоятельств, навсегда пропишутся в блоке «Популярные записи».

На эту мысль натолкнул один известный сайт, посвященный работе в Photoshop. Так, в блоке «Популярные», выводятся уроки, которые качественно хуже, чем более новые. Но, из-за их более раннего появления, имеют больше просмотров. Список популярных записей не меняется вот уже более полутора лет. Нужно ли это и вам?

Что касается популярности по комментариям. Возникают ряд вопросов. Что если пока комментариев на сайте нет? Как ранжировать, если критерий популярности — только комментарии? Вопросов больше, чем ответов.

Создаем алгоритм популярности

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

Индекс популярности = Просмотры / Дни существования

Разберемся. Исходя из формулы, пост «A», который существует 100 дней, и имеет 100 просмотров, будет менее популярен, чем более новый пост «B», но за 1 день, собравший 10 просмотров. Это логично, ведь теоретически, пост «B» за те же 100 дней наберет значительно больше просмотров, чем его конкурент.

Однако, и эта формула не учитывает еще один момент. 100 дней назад посещаемость сайта могла быть всего лишь 1 человек в день, а в момент публикации поста «B» — 100 человек в день. Давайте введем еще один фактор ранжирования. Это показатель комментирования. Логично, ведь если публикацию обсуждают, значит она интересна. Наша формула будет выглядеть следующим образом:

Индекс популярности = Комментарии + Просмотры / Дни существования

Итак, в нашем алгоритме будут учитываться следующие факторы:

  1. количество просмотров записи
  2. количество дней существования публикации
  3. количество комментариев

Теперь, определившись с формулой, приступим к реализации вывода записей по созданному индексу популярности.

Вывод записей

Создадим заготовку, которая послужит отправной точкой. Выводим 5 записей. Разместите следующий код там, где хотите вывести посты.

Теперь можно его красиво оформит. Этот код нужно разместить в файл style.css вашей темы.

#popular_posts ul { margin-left:10px; } #popular_posts ul li{ display:block; border-bottom:1px solid #f1f1f1; padding:15px 0px 20px 0px; height:50px; font-size:13px; } #popular_posts ul li img { width: 50px; height: 50px; float: left; margin: 0 13px 0 0px; background: #fff; border: 2px solid #f1f1f1; border-radius: 50%; } #popular_posts ul li p { margin-top:10px; }

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

Количество просмотров страницы

Function setPostViews($postID) { $count_key = "views"; $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); } } function getPostViews($postID){ $count_key = "views"; $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; }

Обязательно считаем каждое посещение страницы. Его нужно разместить в файл одиночной записи, обычно это single.php

На всякий случай, если нужно вдруг вывести во фронтэнде:

Просмотры:

Считаем количество дней существования поста

// получаем дату публикации поста в секундах начиная с 1 января 1970 года $dtNow = get_post_time("U", true, $postid); // получаем текущее время $dtTime = current_time("U"); // считаем разницу в днях $diff = $dtTime - $dtNow; $days = $diff/86400;

Считаем количество комментариев

comments_number("0", "1", "%");

Итак, мы определили, как будем получать данные каждой записи для подсчета индекса популярности.

Выводим записи по популярности

Есть один важный момент. Если мы станем пересчитывать индекс популярности всякий раз, когда кто-то заходит на сайт, это создаст довольно высокую нагрузку. Сайт может работать медленнее. Чтобы не создавать лишней нагрузки, давайте запланируем задачу, которая позволит нам производить пересчет один раз в сутки. Воспользуемся планировщиком wp_schedule_event() . Разместите код ниже в файл function.php:

// добавляем запланированный хук add_action("wp", "my_activation"); function my_activation() { if(! wp_next_scheduled("my_daily_event")) { wp_schedule_event(time(), "daily", "my_daily_event"); } } // добавляем функцию к указанному хуку function do_this_daily() { global $wpdb; $postids = $wpdb->get_results("SELECT ID FROM $wpdb->posts WHERE post_status="publish" AND post_type="post" ORDER BY ID ASC"); foreach($postids as $postid){ $postid = $postid->ID; // ID записи // считаем количество просмотров $views = (int)get_post_meta($postid, "views", true); // считаем дни существования поста //$dtNow = get_the_time("U"); $dtTime = current_time("U"); $diff = $dtTime - $dtNow; $dtNow = get_post_time("U", true, $postid); $dtTime = current_time("U"); $diff = $dtTime - $dtNow; // считаем комментарии и сумму просмотров с комментариями $comments = get_comments_number($postid); $summa = $views + $comments; // считаем индекс популярности if ($days = "0"){ $pop_index = $summa / 1; } else { $days = (int)$diff/86400; $pop_index = $summa / $days; } $pop = round($pop_index, 2); // записываем индекс популярности в произвольное поле поста update_post_meta($postid, "popularity", $pop); } } add_action("my_daily_event", "do_this_daily", 10, 2);

Теперь сам вывод постов.

Вывод через шорткод

Для удобства, давайте попробуем выводить записи через шорткод [ popular-posts ] (не забудьте убрать пробелы).

Function popular_posts() { ob_start(); ?>

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

Вместо итогов

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

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

Пример популярных записей собственного производства на скриншоте ниже:

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

Function devise_set_post_views($postID) { $count_key = "devise_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); } } remove_action("wp_head", "adjacent_posts_rel_link_wp_head", 10, 0);

Теперь, когда функция на месте, нужно ее вызвать для отдельных записей в блоге. Таким образом функция будет точно знать, каким записям нужно увеличить счетчик просмотров. Для этого нуэно вставить следующий код в в цикл для отдельной записи (скорее всего в файл single.php вашей темы):

Devise_set_post_views(get_the_ID());

Если же вы используете дочернюю тему (child theme) или же просто хотите упростить все это, тогда вам нужно добавить трекер для отслеживания в хидер, используя хук wp_head. Вствьте следующий код в файл functions.php вашей темы или в :

Function devise_track_post_views ($post_id) { if (!is_single()) return; if (empty ($post_id)) { global $post; $post_id = $post->ID; } devise_set_post_views($post_id); } add_action("wp_head", "devise_track_post_views");

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

Примечание : Есл вы используете плагин кеширования на вашем блоге, то такой способ НЕ будет работать по-умолчанию. У плагина W3 Total Cache есть функция под названием Fragmented Caching. Нужно ее задействовать, и проблема исчезнет. Нужно изменить следующее:

Теперь можно вытворять разные интересные вещи, такие как отображение количества просмотров записи, или сортировать по этим самым просмотрам… Давайте посмотрим как их можно реализовать:

Function devise_get_post_views($postID){ $count_key = "devise_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." просмотров"; }

Затем вставить внутрь цикла записи следующее:

Devise_get_post_views(get_the_ID());

Если нужна сортировка записей по количеству просмотров, это можно реализовать с помощью параметра post_meta wp_query. Самый простой пример цикла запроса будет выглядеть так:

4, "meta_key" => "devise_post_views_count", "orderby" => "meta_value_num", "order" => "DESC")); while ($popularpost->have_posts()) : $popularpost->the_post(); the_title(); endwhile; ?>

Для добавления других параметров WP_Query, таких как диапазон времени, обратитесь на

Для размещения наиболее популярных записей на сайте используется 2 метода установка плагина WP-PostViews и размещение кода .


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

Размещение кода для вывода популярных записей

Популярные статьи в блоге могут отбираться по двум критериям:

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

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

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

1. В папке с вашей темой откройте файл functions.php и вставьте код:

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); } } 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; }

Данный код будет использоваться для подсчета количества просмотров статьи посетителями.

Примечание: numberposts’ => 5 — количество статей выводимых в блоке сайдбара.

В результате получаем:

Лучшие записи с миниатюрами по количеству комментариев

1. Откройте файл sidebar.php и разместите такой код:

Примечание: posts_qty = 5 — количество статей, period = 90 — количество дней

При желании вы можете указать свои настройки.

2. Откройте файл style.css и добавьте стили. Для этого вставьте код:

Popular ul li{ line-height:16px; display:block; border-bottom:1px solid #ECECEC; padding:15px 0px 20px 0px; height:50px; font-size:12px; } .popular ul li img { width: 55px; height: 55px; padding: 2px; float: left; margin: 0 13px 0 0px; background: #FFFFFF; border: 1px solid #D0D0BB; border-radius: 5px; box-shadow: 0 0 5px #666666; } .popular li img:hover { border: 1px solid #ffffff; padding: 2px; margin: 0 5px 0 4px; }

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

Получаем такой перечень лучших статей с миниатюрами

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

Для этого в файл functinos.php добавьте такой код:

Function get_PostViews($post_ID){ $count_key = "post_views_count"; $count = get_post_meta($post_ID, $count_key, true); return $count; } function post_column_views($newcolumn){ $newcolumn["post_views"] = __("Просмотры"); return $newcolumn; } function post_custom_column_views($column_name, $id){ if($column_name === "post_views"){ echo get_PostViews(get_the_ID()); } } add_filter("manage_posts_columns", "post_column_views"); add_action("manage_posts_custom_column", "post_custom_column_views",10,2);

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