Как вывести статистику просмотров страницы на WordPress без плагина. Пользовательская функция.

Как вывести статистику просмотров страницы на WordPress без плагина. Пользовательская функция.

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

1. искать плагин

2. позаимствовать функцию у коллег.

Способ 2 выглядит проще. Я позаимствовал эту функцию на известном сайте  http://wp-kama.ru/, ну а вы же можете её позаимствовать у меня( !я ж не жадный). Плюс к этому коду пришлось дописать свою функцию для вывода количества просмотров, ведь согласитесь, как-то неудобно писать ещё пару строчек кода чтоб вывести статистику просмотров страницы.

Вам нужно вставить этот код в functions.php вашей темы. А в том месте где нужно вывести статистику просмотров сделать вставку типа: <?php count_views(); ?>

/* Подсчет количества посещений страниц
---------------------------------------------------------- */
add_action('wp_head', 'kama_postviews');
function kama_postviews() {

/* ------------ Настройки -------------- */
$meta_key       = 'views';  // Ключ мета поля, куда будет записываться количество просмотров.
$who_count      = 1;            // Чьи посещения считать? 0 - Всех. 1 - Только гостей. 2 - Только зарегистрированных пользователей.
$exclude_bots   = 1;            // Исключить ботов, роботов, пауков и прочую нечесть :)? 0 - нет, пусть тоже считаются. 1 - да, исключить из подсчета.

global $user_ID, $post;
	if(is_singular()) {
		$id = (int)$post->ID;
		static $post_views = false;
		if($post_views) return true; // чтобы 1 раз за поток
		$post_views = (int)get_post_meta($id,$meta_key, true);
		$should_count = false;
		switch( (int)$who_count ) {
			case 0: $should_count = true;
				break;
			case 1:
				if( (int)$user_ID == 0 )
					$should_count = true;
				break;
			case 2:
				if( (int)$user_ID > 0 )
					$should_count = true;
				break;
		}
		if( (int)$exclude_bots==1 && $should_count ){
			$useragent = $_SERVER['HTTP_USER_AGENT'];
			$notbot = "Mozilla|Opera"; //Chrome|Safari|Firefox|Netscape - все равны Mozilla
			$bot = "Bot/|robot|Slurp/|yahoo"; //Яндекс иногда как Mozilla представляется
			if ( !preg_match("/$notbot/i", $useragent) || preg_match("!$bot!i", $useragent) )
				$should_count = false;
		}

		if($should_count)
			if( !update_post_meta($id, $meta_key, ($post_views+1)) ) add_post_meta($id, $meta_key, 1, true);
	}
	return true;
}

/**
 * функция выводит или возвращает к-во просмотров статьи
 * @param  integer $post_id - id записи, в цикле можно не передавать
 * @param  boolean $show    - вывести или возвратить
 * @return int           - к-во просмотров
 */
function count_views($post_id=0,$show=true){
	global $post;
	$post_id=empty($post_id)?$post->ID:(int)$post_id;
	$views=get_post_meta($post_id,'views',1);
	$views=empty($views)?0:$views;
	if($show){
		echo $views;
	}else{
		return $views;
	}
}
Поділитися:
Підписатися
Сповістити про
0 Ваш коментар
Старіші
Новіші Найпопулярніші
Вбудовані Відгуки
Переглянути всі коментарі