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

Как вывести количество просмотров постов в админке и список постов с наибольшим количеством просмотров | n-wp.ru

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

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

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

 
    ...
                                            

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

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

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


    
        
<a title="" href="">

Этот код создает цикл вывода постов с наибольшим значением мета-данных _pageviews, отбирает 5 постов и выводит их в обратном порядке, начиная с поста с самым большим количеством просмотров.

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

Автор tiaurus 2182 Articles
Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

6 Комментарии

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

  2. Добрый день!

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

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

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

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

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

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

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

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

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*