Как вывести статистику просмотров страницы на 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; } }