WP-PostViews jest prostym licznikiem czytań notki dla WordPressa. Niestety plugin ten nie jest odporny na odświeżanie strony, dlatego jego pomiary tak do końca nie są poprawne i rzeczywiste. Zawsze się znajdzie osoba, która podbije co jakiś czas wartość czytań odświeżając kilkakrotnie stronę...
Od dawna wiedziałem o tym problemie, ale dopiero dziś rozmowa z Wojciechem skłoniła mnie do wprowadzenia małej poprawki do tej wtyczki, w celu zabezpieczenia przed powtórnym odświeżeniem strony przez tego samego usera.
Najprostszym zabezpieczeniem jest zastosowanie ciasteczek, które będą informowały o obecności danego usera. Czas życia ciastka ustawimy na 10 minut, bo nie ma potrzeby blokowania licznika na całą dobę. W końcu jest to pomiar czytań, a nie unikalnych załadowań. A jak wiadomo czytać dany tekst można wiele razy w ciągu doby. Dlatego 10 minut powinno być wystarczające :)
W pliku plugina znajdujemy fragment kodu:
update_post_meta($id, 'views', ($post_views+1)); |
i zamieniamy go na poniższy:
if ($_COOKIE['post'.$id] <> "1") { update_post_meta($id, 'views', ($post_views+1)); setcookie("post".$id, "1", time()+1800); } |
Od teraz możemy się cieszyć rzetelniejszymi i bardziej pewnymi pomiarami. Nikt nam nie będzie nabijał licznika! Chyba, że znajdzie się jakiś "nawiedzony" user, który specjalnie będzie czyścił swoje "kookisy" w przeglądarce i na złość nam odświeżał stronę...
Link do postu na Polskim Supporcie WP poruszającego temat tej wtyczki ;)
Chyba bardziej prawidłowo będzie:
if ( !isset( $_COOKIE[‘post’.$id] ) ) {
W końcu nie jest istotne jaką wartość ma ciasteczko, a PHP nie bedzie wywalał NOTICE.
W sumie racja, tak będzie lepiej :)
Ale zresztą kto ma włączone wyświetlanie ostrzeżeń NOTICE, w końcu to nie Warning :P
Nikt mądry :) Ale zawsze to 0.00001 sekundy szybciej skrypt wykonany ;-)