Сложно ли прикрутить куки и как?
Создал счетчик просмотров категории на основе СЧЕТЧИК ПОСТОВ и добавил mu-plugins
/**** Подсчет количества посещений страниц */
add_action('wp_head', 'kolshix_catviews');
function kolshix_catviews() {
$meta_key = 'views_cat'; // Ключ мета поля, куда будет записываться количество просмотров.
$who_count = 0; // Чьи посещения считать? 0 - Всех. 1 - Только гостей. 2 - Только зарегистрированных пользователей.
$exclude_bots = 1; // Исключить ботов, роботов, пауков и прочую нечесть :)? 0 - нет, пусть тоже считаются. 1 - да, исключить из подсчета.
global $user_ID, $wp_query;
$cat_obj = $wp_query->get_queried_object();
$cat_id = $cat_obj->term_id;
// считать только рубрики нижнего уровня
$cat_data = get_categories( array( 'parent' => $cat_id, 'order' =>'ASC', 'exclude' =>'1', 'hide_empty' => 0 ) );
if(is_archive() && empty($cat_data)) {
$id = (int)$cat_id;
static $cat_views = false;
if($cat_views) return true; // чтобы 1 раз за поток
$cat_views = (int)get_term_meta( $id, $meta_key, true );
$should_count = false;
switch( (int)$who_count ) {
case 0:
// if( (int)$user_ID !== 1 ) /* АДМИНа не считать */
$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_term_meta($id, $meta_key, ($cat_views+1)) ){
add_term_meta($id, $meta_key, 1, true);
}
}
}
return true;
}