Подсчет количества просмотров, посещений страниц в WordPress без плагинов

Функция подсчета просмторов страниц в WordPressСегодня мы разберем, как без помощи плагинов, считать количество посещений страниц в WordPress.

Это может пригодиться вам по разным причинам, например, собрать небольшую статистику вашего сайта. Но другим применением можно считать для того, чтобы использовать этот счетчик для другой цели: для показа записей на главной странице по количеству просмотров.

Если брать за основу какой-нибудь плагин, который потом будем разрывать на куски чтобы оставить только нужное, то я выбрал плагин wp-postviews. Кстати, хороший, простенький помощник для подсчета просмотров страниц. Есть у него и страший, более навороченный брат — WP-PostViews Plus. Кроме подсчета посещений страниц он выводит информацию о нем: IP адрес, браузер и др. Да еще создает таблицу в БД.

Поэтому по-простоте выберем плагин wp-postviews. Правда, в нем есть свои недостатки — он не учитывает Яндекс ботов.

Плагин можно настроить, указав чьи визиты считать. Логично будет, если будем учитывать визиты людей, отсеяв ботов. Но исключает плагин не совсем так, как нужно. Исключает он только тех ботов, которые есть в списке, других он принимает за посетителей, что создает неправильную статистику.

В коде же сделано по-другому. Указаны не те, кого не надо считать, а те кого, наоборот, надо, прописав идентификаторы браузеров.

Ты не в курсе как сейчас заработать деньги реально тебе расскажет ТинаевКОМ.

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

  1. /* Подсчет количества посещений страниц
  2. ———————————————————- */
  3. add_action(‘wp_head’, ‘postviews’);
  4. function postviews() {
  5. /* ———— Настройки ————— */
  6. $meta_key       = ‘views’;  // Ключ мета поля, куда будет записываться количество просмотров.
  7. $who_count      = 1;            // Чьи посещения считать? 0 — Всех. 1 — Только гостей. 2 — Только зарегистрированых пользователей.
  8. $exclude_bots   = 1;            // Исключить ботов, роботов, пауков и прочую нечесть :)? 0 — нет, пусть тоже считаются. 1 — да, исключить из подсчета.
  9. /* СТОП настройкам */
  10. global $user_ID, $post;
  11.     if(is_singular()) {
  12.         $id = (int)$post->ID;
  13.         static $post_views = false;
  14.         if($post_views) return true; // чтобы 1 раз за поток
  15.         $post_views = (int)get_post_meta($id,$meta_key, true);
  16.         $should_count = false;
  17.         switch( (int)$who_count ) {
  18.             case 0: $should_count = true;
  19.                 break;
  20.             case 1:
  21.                 if( (int)$user_ID == 0 )
  22.                     $should_count = true;
  23.                 break;
  24.             case 2:
  25.                 if( (int)$user_ID > 0 )
  26.                     $should_count = true;
  27.                 break;
  28.         }
  29.         if( (int)$exclude_bots==1 && $should_count ){
  30.             $useragent = $_SERVER[‘HTTP_USER_AGENT’];
  31.             $notbot = «Mozilla|Opera»; //Chrome|Safari|Firefox|Netscape — все равны Mozilla
  32.             $bot = «Bot/|robot|Slurp/|yahoo»; //Яндекс иногда как Mozilla представляется
  33.             if ( !preg_match(«/$notbot/i», $useragent) || preg_match(«!$bot!i», $useragent) )
  34.                 $should_count = false;
  35.         }
  36.         if($should_count)
  37.             if( !update_post_meta($id, $meta_key, ($post_views+1)) ) add_post_meta($id, $meta_key, 1, true);
  38.     }
  39.     return true;
  40. }

Теперь копируем код и устанавливаем его в шаблоновский файл functions.php. А в том месте, где вы хотите вывести число просмотров страниц, вставьте этот код:

  1. Просмотров: <?php echo get_post_meta ($post->ID,’views’,true); ?>

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

Например, у вас был плагин с таким же полем ‘post_meta_name‘, тогда в нашем коде надо поменять ‘views‘ на ‘post_meta_name‘:

  1. Просмотров: <?php echo get_post_meta ($post->ID,’post_meta_name’,true); ?>

Похожие записи:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Похожие записи: