Как вывести количество просмотров постов в админке и список постов с наибольшим количеством просмотров

Как вывести количество просмотров постов в админке и список постов с наибольшим количеством просмотров | n-wp.ru
Пример функции, подсчитывающей количество просмотров каждого поста. Количество просмотров выводится в админке, его можно вывести в посте, и на его основе можно создать топ постов с наибольшим числом просмотров.
👍 Научим бесплатно правильно создавать сайты на WordPress. Подробнее →

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

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

Для того, чтобы внедрить подсчет и отображение количества просмотров постов, добавьте в файл 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 постов и выводит их в обратном порядке, начиная с поста с самым большим количеством просмотров.

Как вывести количество просмотров постов в админке и список постов с наибольшим количеством просмотров

Создай свой первый сайт на WordPress

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

Оцените автора
Добавить комментарий

  1. Nurlan

    Не перестаю удивляться Вашей сообразительности. Раньше использовал плагин для этих целей, а теперь заменил и все работает. Спасибо.

    Ответить
  2. antony

    Добрый день!

    Помогите мне , пожалуйста!

    Подскажите, какой код и куда его нужно вставить, чтобы считалось количество УНИКАЛЬНЫХ просмотров?

    И ещё, чтобы при выводе списка постов подсчитывалось количество уникальных просмотров за 30 дней.

    Заранее огромное спасибо!

    Ответить
  3. antony

    Прошу прощения, ещё маленький вопрос.
    Как сделать так, чтобы список был упорядочен не только по количеству просмотров, но и по количеству комментариев? Причём, количество просмотров должно быть важнее.

    Большое спасибо!

    Ответить
  4. antony

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

    Ответить
  5. Vitor

    Видимо людям так надо,что никто этого просто не замечает.Если есть возможность Вы и ранее видимо это замечали TIAURUS,такая проблема если зайти в запись он прибавляет +1 к просмотру,но если обновить страницу этой записи будет уже +2,и так до бесконечности,это очень серьёзная проблема и пытался её решить,но у меня ничего не вышло,есть ли решение,что бы пользователи не накручивали себе рейтинги.

    Ответить
    1. cp

      удалось как то решить проблему?

      Ответить
  6. Андрей

    Здравствуйте, спасибо за скрипт. Но возникает ошибка:

    (PHP Warning:  A non-numeric value encountered in), в этой строке: update_post_meta($post->ID, '_pageviews', $pv + 1);

    Возможно нашёл решение:

    update_post_meta($post->ID, '_pageviews', (int)$pv + (int)'1');

    Подскажите, правильно ли это?

    Ответить