ГлавнаяWordpressАвторские Функции → Считаем количество посещений страниц на WordPress без плагинов
GoGetLinks.net

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

Комментариев: 155Считаем количество посещений страниц на WordPress без плагинов
  • Решил воспользоваться Вашей функцией счетчика. В принципе всё работает, и даже более-менее соответствует статистике ЛиРу, но есть один большой недочет. Касается он популярного браузера - FireFox. В частности последней версии 3.6.16. При заходе на пост сайта с помощью этого браузера, счетчик отщелкивает на единицу не только поле "views" этого поста, но и поле следующего за ним (то есть последующего по времени размещения). Увеличиваются на единицу счетчики и текущего, и следующего поста. С другими браузерами (Опера, опера-мини, осел, хром и т.д.) такого не происходит, то есть работает все правильно. Почему это происходит - я не знаю. Решил отловить обращение ФФ к этому следующему посту, добавив еще одно поле строкой:

    update_post_meta($id, 'agent', $useragent);

    И действительно, ФФ обращается к следующему посту, идентифицируя себя так же как и в текущем:

    Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.15) Gecko/20110303 AlexaToolbar/alxf-2.01 MRA 5.7 (build 03796) Firefox/3.6.15

    Пробовал отключать ВСЕ плагины в ФФ и WordPresse - все то же самое. (WP, кстати, версии 3.1). Пробовал менять темы - не помогло.
    Возникла мысль, что программисты ФФ забили в браузер возможность "предзагрузки" для ускорения навигации, ориентируясь, скажем на мета-тег:

    <link rel='next' title='' ...

    появившийся в последних версиях Вордпресса. Подскажите, как с этим бороться. Статистика получается искаженной. Ведь Фоксом пользуется почти треть посетителей, таким образом вытягивающие рейтинг не только популярного поста, но и соседнего с ним. А это неадекватно сказывается на сортировке по популярности.
    Проанализировать работу можно на ЭТОМ сайте.

    PS. Как ведут себя другие, более ранние версии ФФ - не пробовал.

    ОТВЕТИТЬ ↓
    • Действительно странно smile ФФ определенно, как вы и сказали, заранее подгружает следующую страницу, ссылку на которую он, наверняка, берет из мета тегов, попробуйте удалить метатеги <link rel='next'... <link rel='prev'...

      Делается это добавлением такой строчки в functions.php:

      remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10 );

      Можно еще это удалить:

      remove_action( 'wp_head', 'wlwmanifest_link' );
      remove_action( 'wp_head', 'index_rel_link' );
      ОТВЕТИТЬ ↓
      • Убрал метатеги 'next' и 'prev' - всё стало отлично. Спасибо smile Теперь Лиса не ходит куда не надо laugh . Только вот волнует вопрос, а не ухудшит ли это индексацию сайта роботами? Я так предполагаю, что поисковая машина как-то использовала эти строки для своих целей. Или я не прав?

        ОТВЕТИТЬ ↓
        • Не думаю, что это как-то может повлиять на индексацию сайта! Для роботов есть ссылки на страницах и всякие карты сайта, вплоть до xml карты.

          Эти теги для всяких браузеров и нужны. В частности, чтобы кнопки "назад", "вперед" были всегда в одном месте - в интерфейсе браузера. Удобно в общем-то, только большой вопрос пользуются ли этим люди, я - нет! smile

          Вообще, если честно я не совсем понимаю, почему так часто задаются вопросы об индексации страниц с точки зрения того, как и где указывать роботу об их существовании. Потому что для того чтобы робот узнал о существующей странице нужно всего-то указать ссылку на неё, притом даже не столь важно где её указывать. Робот ведь не человек - ничего не упустит. А проиндексирует робот страницу или нет, это уже зависит от, собственно, самой страницы.

          П.С. Вы круто подметили, что на подгружаемых страницах счетчик считает.

          ОТВЕТИТЬ ↓
  • Функцию показа посещений я использовал на главной странице. В итоге те записи у которых не было посещений выглядели так: Просмотров: , а те что уже просматривались так: Просмотров: 1

    Как исправить чтобы к непросмотренным записям присваивалась цифра 0?

    ОТВЕТИТЬ ↓
    • Выводите так:

      <?php echo $m=get_post_meta ($post->ID, 'views', true) ? $m : '0'; ?>
      ОТВЕТИТЬ ↓
  • Огромное Вам спасибо! Этот блог - кладезь полезных функций. Сделал вот так:

    Просмотров: <?php echo get_post_meta ($post->ID,'views',true); ?><?php echo $m=get_post_meta ($post->ID, 'views', true) ? $m : '0'; ?>

    и выводится как положено.

    ОТВЕТИТЬ ↓
    • А зачем 2 раза get_post_meta() использовать?

      ОТВЕТИТЬ ↓
      • А без него просто нули показывает *pardon*

        ОТВЕТИТЬ ↓
    • А этот код

      Просмотров: <?php echo get_post_meta ($post->ID,'views',true); ?><?php echo $m=get_post_meta ($post->ID, 'views', true) ? $m : '0'; ?>

      тупо добавляет лишний ноль к количеству просмотров

      ОТВЕТИТЬ ↓
      • <?php echo get_post_meta ($post->ID,'views',true);
        if(get_post_meta ($post->ID,'views',true)<1)
        echo "Не смотрели ещё"; ?>
        

        Господи на небесах пердяший куда мир катится хоть бы кто со мной поговорил.

        зачем переменные,да ещё и сравнивать есть " > "

        ОТВЕТИТЬ ↓
  • Не работает сия функция:
    У меня на сайте выводит: Просмотров: ID,’views’,true); ?>

    Гляньте, пожалуйста, на сайте жилья

    ОТВЕТИТЬ ↓
  • Как сделать что бы он в loop.php работал никто не придумал? smile

    ОТВЕТИТЬ ↓
  • подсчёт просмотров работает а вывод самых просматриваемых почему то не работает всё делаю по вашей инструкции прошу помощи!!

    ОТВЕТИТЬ ↓
    • footer.php сохраните в кодировке UTF8 без бомб))

      ОТВЕТИТЬ ↓
  • Так.

    Сменила шаблон, теперь, хотя в произвольном поле сохраняются данные просмотров, которые натикали на старом шаблоне, на странице с постом просмотров кагбе нет. То есть по нулям.
    Теперь я не знаю: или я что-то не так сделала, или так и должно быть. В смысле, не исключено, что при переходе на новый шаблон, к примеру, и прописывания нужного кода в function.php и в single.php, отсчёт начинается по-новой smile Да?

    Не смешно..

    Задам глупый вопрос, можно? А нельзя ли сделать так, чтобы данные из custom fields автоматом подхватывались при переходе на другой шаб? А то я экспериментировать-то с ними люблю, и каждый раз будет выглядеть так, словно мой несчастный бложег только-только открымшись.. *sarcastic*

    ОТВЕТИТЬ ↓
    • В функции kama_postviews, значение переменной:

      $meta_key       = 'views';

      должно совпадать со вторым параметром передаваемым функции get_post_meta():

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

      Проверь это еще раз, если все рано не будет работать, то будем думать дальше.

      ОТВЕТИТЬ ↓
      • У меня →

        $meta_key       = 'Просмотров'; 

        и →

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

        На прежнем шаблоне всё работало на ура. На этом — ни одного просмотра (якобы) ни одной страницы. В произвольных полях значения, которые были на момент перехода с прежнего шаба на этот.
        Интересно.. если кириллицу "Просмотров" поменять на латиницу "views".. может, здесь зарыта собака?

        Да, ещё хочу спросить: есть ли возможность сделать так, чтобы твой код можно было юзать через виджеты? А то на этом шабе всё — через них делается smile

        ОТВЕТИТЬ ↓
        • Дело видимо в том, что файл темы где вызываются просмотры в кодировке ANSI. Измени кодировку файла темы на UTF-8 без BOM. И уже количество просмотров должно выводится на экране.

          Потом, во избежание подобных неприятностей, лучше все-таки переименовать ключ произвольного поля на views:

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

          <?php global $wpdb;
          $wpdb->query("UPDATE $wpdb->postmeta SET meta_key='views' WHERE meta_key='Просмотров'");
          ?>
          

          Этот код заменит просмотров на views в Базе Данных

          Затем, измени просмотров на views в функции и в выводе.

          ОТВЕТИТЬ ↓
  • файл темы где вызываются просмотры в кодировке ANSI

    Ты имеешь в виду файл single.php? Почему ты решил, что он в ANSI? Он в УТФ.. На всякий случай пересохранила и проделала всё, что ты советовал, — пока всё то же самое..

    ОТВЕТИТЬ ↓
    • Странно что по-прежнему не работает.

      Если у постов сейчас есть произвольное поле views и посещения подсчитываются, то

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

      просто обязана выводить количество просмотров. Произвольные поля существуют?

      Может каким-то образом переменная $post в данном случае не относится к глобальной и поэтому $post->ID не передает ID поста. Попробуй ка добавить global $post; перед вызовом:

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

      П.С. Если это не поможет, то нужно мне как-то глазами взглянуть на шаблон. Можно его сюда скинуть: t.kamaev[дог]ya.ru

      ОТВЕТИТЬ ↓
  • Попробуй ка добавить global $post; перед вызовом

    Уррраааа!!!!!! Заработало с этой добавкой!!!! Ты прелесть *good*
    Ща пойду тебя пиарить в Твиттере wink Потом в блоге (помню, что давно обещала, теперь время окончательно пришло).

    Слушай, а что ты таки скажешь на возможность заюзать это дело через виджеты?

    ОТВЕТИТЬ ↓
    • Спасибо!

      Можно виджет сделать конечно, только что он будет из себя представлять? Самые посещаемые статьи?

      ОТВЕТИТЬ ↓
  • что он будет из себя представлять?

    Можно один виджет, но с возможностью выбора.
    Например: справа засовываем блок и указываем, что здесь надо показывать самые просматриваемые статьи.
    Потом слева засовываем тот же виджет, но указываем, что здесь, слева, у нас будут отображаться наименее просматриваемое.
    А можно сделать 2 виджета: для наиболее и наименее.
    Будет шикарно smile По опыту юзания на прошлом шабе: народ таки начинает интересоваться, а что это за посты с малым кол-вом просмотров? И идё туда. В результате циферки-то растут wink

    ОТВЕТИТЬ ↓
Форма комментирования

¤ Вставляйте код кнопкой: "Код" (php, js, html, css, sql);
¤ Выделяйте HTML код кнопкой: "Выделить" (<div>);
¤ Перед отправкой комментария используйте "Превью";
¤ Не пишите спам/бред — бесполезно!

Подписаться на комментарии без комментирования:

X

Забыли пароль?