Помнится мне, в детстве луноходы разбирать любил, сегодня все уже не так - повзрослел, а отголоски "вредных" привычек остались - теперь разбираю плагины для WordPress :).
На этот раз разбирался с wp-postviews (плагин для подсчета посещений постов/страниц в WordPress) и вырвал ему сердце :). Разбор получился мощный - я выкинул практически все, ...
- Предыдущие по меткам
- Предыдущие записи
Ранее: Замены плагинам
- Подсветка результатов поиска, без использования плагинов ← 17.Апр.2010 // 18
- Альтернатива плагину WP-pagenavi (пагинация для WordPress) ← 29.Мар.2010 // 73
- Пакетно перемещаем статьи в другую категорию ← 21 Апрель 2010 // 7
- Перелинковка статей (предыдущие записи) ← 19 Апрель 2010 // 60
- Подсветка результатов поиска, без использования плагинов ← 17 Апрель 2010 // 18

Решил воспользоваться Вашей функцией счетчика. В принципе всё работает, и даже более-менее соответствует статистике ЛиРу, но есть один большой недочет. Касается он популярного браузера - FireFox. В частности последней версии 3.6.16. При заходе на пост сайта с помощью этого браузера, счетчик отщелкивает на единицу не только поле "views" этого поста, но и поле следующего за ним (то есть последующего по времени размещения). Увеличиваются на единицу счетчики и текущего, и следующего поста. С другими браузерами (Опера, опера-мини, осел, хром и т.д.) такого не происходит, то есть работает все правильно. Почему это происходит - я не знаю. Решил отловить обращение ФФ к этому следующему посту, добавив еще одно поле строкой:
И действительно, ФФ обращается к следующему посту, идентифицируя себя так же как и в текущем:
Пробовал отключать ВСЕ плагины в ФФ и WordPresse - все то же самое. (WP, кстати, версии 3.1). Пробовал менять темы - не помогло.
Возникла мысль, что программисты ФФ забили в браузер возможность "предзагрузки" для ускорения навигации, ориентируясь, скажем на мета-тег:
появившийся в последних версиях Вордпресса. Подскажите, как с этим бороться. Статистика получается искаженной. Ведь Фоксом пользуется почти треть посетителей, таким образом вытягивающие рейтинг не только популярного поста, но и соседнего с ним. А это неадекватно сказывается на сортировке по популярности.
Проанализировать работу можно на ЭТОМ сайте.
PS. Как ведут себя другие, более ранние версии ФФ - не пробовал.
Действительно странно
ФФ определенно, как вы и сказали, заранее подгружает следующую страницу, ссылку на которую он, наверняка, берет из мета тегов, попробуйте удалить метатеги <link rel='next'... <link rel='prev'...
Делается это добавлением такой строчки в functions.php:
Можно еще это удалить:
Убрал метатеги 'next' и 'prev' - всё стало отлично. Спасибо
Теперь Лиса не ходит куда не надо
. Только вот волнует вопрос, а не ухудшит ли это индексацию сайта роботами? Я так предполагаю, что поисковая машина как-то использовала эти строки для своих целей. Или я не прав?
Не думаю, что это как-то может повлиять на индексацию сайта! Для роботов есть ссылки на страницах и всякие карты сайта, вплоть до xml карты.
Эти теги для всяких браузеров и нужны. В частности, чтобы кнопки "назад", "вперед" были всегда в одном месте - в интерфейсе браузера. Удобно в общем-то, только большой вопрос пользуются ли этим люди, я - нет!
Вообще, если честно я не совсем понимаю, почему так часто задаются вопросы об индексации страниц с точки зрения того, как и где указывать роботу об их существовании. Потому что для того чтобы робот узнал о существующей странице нужно всего-то указать ссылку на неё, притом даже не столь важно где её указывать. Робот ведь не человек - ничего не упустит. А проиндексирует робот страницу или нет, это уже зависит от, собственно, самой страницы.
П.С. Вы круто подметили, что на подгружаемых страницах счетчик считает.
Функцию показа посещений я использовал на главной странице. В итоге те записи у которых не было посещений выглядели так: Просмотров: , а те что уже просматривались так: Просмотров: 1
Как исправить чтобы к непросмотренным записям присваивалась цифра 0?
Выводите так:
Огромное Вам спасибо! Этот блог - кладезь полезных функций. Сделал вот так:
и выводится как положено.
А зачем 2 раза get_post_meta() использовать?
А без него просто нули показывает
А этот код
тупо добавляет лишний ноль к количеству просмотров
Господи на небесах пердяший куда мир катится хоть бы кто со мной поговорил.
зачем переменные,да ещё и сравнивать есть " > "
Не работает сия функция:
У меня на сайте выводит: Просмотров: ID,’views’,true); ?>
Гляньте, пожалуйста, на сайте жилья
Как сделать что бы он в loop.php работал никто не придумал?
подсчёт просмотров работает а вывод самых просматриваемых почему то не работает всё делаю по вашей инструкции прошу помощи!!
footer.php сохраните в кодировке UTF8 без бомб))
Так.
Сменила шаблон, теперь, хотя в произвольном поле сохраняются данные просмотров, которые натикали на старом шаблоне, на странице с постом просмотров кагбе нет. То есть по нулям.
Да?
Теперь я не знаю: или я что-то не так сделала, или так и должно быть. В смысле, не исключено, что при переходе на новый шаблон, к примеру, и прописывания нужного кода в function.php и в single.php, отсчёт начинается по-новой
Не смешно..
Задам глупый вопрос, можно? А нельзя ли сделать так, чтобы данные из custom fields автоматом подхватывались при переходе на другой шаб? А то я экспериментировать-то с ними люблю, и каждый раз будет выглядеть так, словно мой несчастный бложег только-только открымшись..
В функции kama_postviews, значение переменной:
должно совпадать со вторым параметром передаваемым функции get_post_meta():
Проверь это еще раз, если все рано не будет работать, то будем думать дальше.
У меня →
и →
На прежнем шаблоне всё работало на ура. На этом — ни одного просмотра (якобы) ни одной страницы. В произвольных полях значения, которые были на момент перехода с прежнего шаба на этот.
Интересно.. если кириллицу "Просмотров" поменять на латиницу "views".. может, здесь зарыта собака?
Да, ещё хочу спросить: есть ли возможность сделать так, чтобы твой код можно было юзать через виджеты? А то на этом шабе всё — через них делается
Дело видимо в том, что файл темы где вызываются просмотры в кодировке ANSI. Измени кодировку файла темы на UTF-8 без BOM. И уже количество просмотров должно выводится на экране.
Потом, во избежание подобных неприятностей, лучше все-таки переименовать ключ произвольного поля на views:
Прям в том же файле, где выводится количество просмотров в шаблоне вставь такой код и один раз обнови страницу, после чего, удали этот код:
<?php global $wpdb; $wpdb->query("UPDATE $wpdb->postmeta SET meta_key='views' WHERE meta_key='Просмотров'"); ?>Этот код заменит просмотров на views в Базе Данных
Затем, измени просмотров на views в функции и в выводе.
Ты имеешь в виду файл single.php? Почему ты решил, что он в ANSI? Он в УТФ.. На всякий случай пересохранила и проделала всё, что ты советовал, — пока всё то же самое..
Странно что по-прежнему не работает.
Если у постов сейчас есть произвольное поле views и посещения подсчитываются, то
просто обязана выводить количество просмотров. Произвольные поля существуют?
Может каким-то образом переменная $post в данном случае не относится к глобальной и поэтому $post->ID не передает ID поста. Попробуй ка добавить global $post; перед вызовом:
П.С. Если это не поможет, то нужно мне как-то глазами взглянуть на шаблон. Можно его сюда скинуть: t.kamaev[дог]ya.ru
Уррраааа!!!!!! Заработало с этой добавкой!!!! Ты прелесть
Потом в блоге (помню, что давно обещала, теперь время окончательно пришло).
Ща пойду тебя пиарить в Твиттере
Слушай, а что ты таки скажешь на возможность заюзать это дело через виджеты?
Спасибо!
Можно виджет сделать конечно, только что он будет из себя представлять? Самые посещаемые статьи?
Можно один виджет, но с возможностью выбора.
По опыту юзания на прошлом шабе: народ таки начинает интересоваться, а что это за посты с малым кол-вом просмотров? И идё туда. В результате циферки-то растут 
Например: справа засовываем блок и указываем, что здесь надо показывать самые просматриваемые статьи.
Потом слева засовываем тот же виджет, но указываем, что здесь, слева, у нас будут отображаться наименее просматриваемое.
А можно сделать 2 виджета: для наиболее и наименее.
Будет шикарно