WordPress как на ладони
Шаблоны, плагины и темы для настоящих поклонников Elementor. От TemplateMonster.com wordpress jino

Сложно ли прикрутить куки и как?

Создал счетчик просмотров категории на основе СЧЕТЧИК ПОСТОВ и добавил 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;                
		}
0
kolshix
436
2 месяца назад

Нет ответов на этот вопрос.

    На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация