Давольно-таки давно начал пользоваться плагином «WP-PostViews». И все было хорошо до тех пор, пока не решил задействовать плагин «DB Cache Reloaded Fix» максимально.
Изначально «DB Cache Reloaded Fix» не кеширует таблицы «wp_posts» and «wp_postmeta» и счетчик показа страниц работает на ура. Но эффективность кеширования запросов к БД в этом случае мала.
Чтобы поправить это дело, я в настройках «DB Cache Reloaded Fix» очистил поле «Cache filter» — после чего количество кешируемых запросов сильно увеличилось и соответственно скорость отклика возрасла.
Но плюсы получились с побочным эффектом — перестали работать счетчики просмотра страниц.
Вскрытие показало, что причина в том, как плагин «WP-PostViews» обновляет счетчик. Он берет текущее значение счетчика и к нему прибавляет 1. Вот здесь и загвоздка — ведь информация о счетчике хранится в таблице «wp_postmeta», значения которой стали кешироваться — получается мы все время толчемся на одном месте — к закешированному числу прибавляем 1 и так каждый раз при обращении к сайту.
Решение простое: «Обновлять счетчик прямым запросом к БД» — таким образом получится обойти закешированное значение счетчика.
Для внесения изменений в коде Вам нужно будет открыть в админке вкладку «Плагины->Установленные» и нажать «Изменить» для плагина «WP-PostViews».
Затем найти в коде строчку:
if(!update_post_meta($id, 'views', ($post_views+1))) {
и заменить ее на
if(!$wpdb->query('UPDATE wp_postmeta SET meta_value = meta_value + 1 where meta_key = \'views\' AND post_id = ' . intval($id) )) {
Все — счетчики будут работать.
P.S.
Один нюанс — Вы будете видеть изменение счетчиков не сразу, а так часто как у Вас настроено время жизни кеша (поле «Expire a cached query after» в плагине «DB Cache Reloaded Fix»).
Евгений Понятовский
at
Не сработало… 🙁
Евгений Понятовский
at
Строчку заменил, сайт перестал загружаться.
Надеюсь на помощь… 🙂
Пока пришлось отключить кэширование postmeta
Владимир
at
День добрый, Евгений.
Возможно есть нюансы версий wordpress, DB Cache Reloaded Fix и WP-PostViews — напишите какие у Вас?
+ если сайт перестал загружаться — наверняка были какие-то ошибки в логах — если есть возможность — покажите их? Должно помочь понять проблему.