В посте Как добавить счетчик просмотров постов я приводил примеры функции, собирающей простейшую статистику страниц – количество их просмотров посетителями. Для одного из своих проектов я использую немного видоизмененный вариант этой функции, которая не только подсчитывает количество посещений и выводит его в посте, но и отображает это количество в админке, а так же формирует топ постов с наибольшим количеством просмотров.
Функция подсчета количества просмотров
Для того, чтобы внедрить подсчет и отображение количества просмотров постов, добавьте в файл functions.php:
add_action('wp','es_pageviews'); add_action('manage_posts_custom_column','display_pageviews_row',10,2); add_filter('manage_pages_columns', 'display_pageviews'); add_filter('manage_posts_columns', 'display_pageviews'); function es_pageviews(){ if(is_single() || is_page()){ global $post; $pv = get_post_meta($post->ID, '_pageviews',true); update_post_meta($post->ID, '_pageviews', $pv+1); } } function display_pageviews($columns){ $columns['pv'] = __('PageViews'); return $columns; } function display_pageviews_row($column_name,$post_id){ if ($column_name != 'pv') return; $pv = get_post_meta($post_id, '_pageviews',true); echo $pv ? $pv : 0; } function the_pageview(){ global $post; $pv = get_post_meta($post->ID, '_pageviews',true); echo $pv ? $pv : 0; }
Эта функция создает мета-данные _pageviews, которые записываются для каждого поста в базу данных и обновляются после каждого посещения страницы этого поста. Количество просмотров выводится в админке отдельным столбцом.
Вывод количества просмотров
Для того, чтобы вывести количество просмотров в посте, нужно вставить вызов функции the_pageview в цикл вывода постов:
<!-- это начало цикла --> ... <!-- вставлять сюда - вызов функции внутри цикла -->
Список постов с наибольшим количеством просмотров
Конечно, без более практического применения собираемой статистики она будет всего лишь красивым оформлением. Поэтому давайте создадим топ постов с наибольшим количеством просмотров:
<div class="top-post"> <span class="top-post-title"><a title="" href=""></a></span> <span class="top-post-pageview"></span> </div>
Этот код создает цикл вывода постов с наибольшим значением мета-данных _pageviews, отбирает 5 постов и выводит их в обратном порядке, начиная с поста с самым большим количеством просмотров.
Не перестаю удивляться Вашей сообразительности. Раньше использовал плагин для этих целей, а теперь заменил и все работает. Спасибо.
Добрый день!
Помогите мне , пожалуйста!
Подскажите, какой код и куда его нужно вставить, чтобы считалось количество УНИКАЛЬНЫХ просмотров?
И ещё, чтобы при выводе списка постов подсчитывалось количество уникальных просмотров за 30 дней.
Заранее огромное спасибо!
Прошу прощения, ещё маленький вопрос.
Как сделать так, чтобы список был упорядочен не только по количеству просмотров, но и по количеству комментариев? Причём, количество просмотров должно быть важнее.
Большое спасибо!
Да, заметил, что при обновлении одной записи прибавляется +1 просмотр к другой записи, расположенной над обновляемой записи в админке.
Видимо людям так надо,что никто этого просто не замечает.Если есть возможность Вы и ранее видимо это замечали TIAURUS,такая проблема если зайти в запись он прибавляет +1 к просмотру,но если обновить страницу этой записи будет уже +2,и так до бесконечности,это очень серьёзная проблема и пытался её решить,но у меня ничего не вышло,есть ли решение,что бы пользователи не накручивали себе рейтинги.
удалось как то решить проблему?
Здравствуйте, спасибо за скрипт. Но возникает ошибка:
Возможно нашёл решение:
Подскажите, правильно ли это?