Zählen Sie die Postansicht, wenn der Benutzer einen Post öffnet

Ich möchte, wenn ein Benutzer den Post öffnet, zählt er die post view . Zur Zeit verwende ich meine benutzerdefinierte function, die ist

  

Das Problem ist jedoch, dass beim Aktualisieren der Seite auch die post view . Also, wie kann ich das Hinzufügen von Ansichten auf Seitenaktualisierung stoppen.

Solutions Collecting From Web of "Zählen Sie die Postansicht, wenn der Benutzer einen Post öffnet"

Eine Möglichkeit, dies zu stoppen, wäre, sich daran zu erinnern, ob dieser Besucher diese Seite in den letzten x Minuten gesehen hat. Sie können das auf verschiedene Arten angehen:

  • Verwenden Sie einen Cookie
  • Besucher-IP speichern
  • Verwenden Sie Sitzungen

Persönlich finde ich die Verwendung von Sitzungen nur zum Zählen von Seiten ein wenig albern.

Cookies können eine gute Lösung sein, und Sie können eine Ablaufzeit festlegen, wenn Sie denselben Benutzer nach einiger Zeit erneut zählen möchten (auch wenn dies eine Seitenaktualisierung ist). Aber vielleicht möchten Sie Ihren Besuchern keine Cookies zufügen (außerdem gibt es europäische Bestimmungen zu Cookies ).

Das Speichern der IP-Adresse ist nicht narrensicher (Besucher können Proxy-Server oder dynamische IP-Adressen verwenden, die von ihrem ISP zugewiesen wurden), aber es ist immer noch eine gute Lösung für einen einfachen Zähler. Da Sie bereits eine function zum Zählen Ihrer Benutzer haben, können Sie einfach ihre IP-Adresse hinzufügen, während Sie gerade dabei sind.

Wenn Sie möchten, dass diese IP-Protokollierung nach einer bestimmten Zeit abläuft, wie das bei Cookies der Fall ist, müssen Sie beim Hinzufügen dieser IP-Adresse auch einen Zeitstempel hinzufügen. Sie könnten dann zwei Dinge tun:

  • Ihr Counter-Skript könnte die Zeitstempel im Protokoll überprüfen und die Einträge ignorieren, die älter als x Minuten sind.
  • Sie könnten einen cronjob für ein separates Skript einrichten, das Einträge aus dem Protokoll löscht, die älter als x Minuten sind.

Letzteres ist vorzuziehen, wenn Ihr Protokoll schnell wächst.

Sie haben ein paar Möglichkeiten:

Speichern Sie die IP-Adresse des Benutzers in der Sitzung

 if($_SESSION['last_ip_address']!= $_SESSION['REMOTE_ADDR']) : setPostViews(get_the_ID()); $_SESSION['last_ip_address'] = $_SESSION['REMOTE_ADDR']; endif; 

Dadurch wird Ihre function nur ausgetriggers, wenn sich die IP-Adresse von der zuletzt gespeicherten IP-Adresse unterscheidet. Sie können das gleiche mit Cookies tun:

 if($_COOKIE['last_ip_address']!= $_SESSION['REMOTE_ADDR']) : setPostViews(get_the_ID()); $setcookie("last_ip_address", $_SESSION['REMOTE_ADDR']); endif; 

Abgesehen davon können Sie viele verschiedene Prüfungen durchführen, Sie können den Cookie setzen, der in einer Stunde abläuft und prüfen, ob er existiert, Sie können zusätzlich den Browser des Benutzers vergleichen. Je nachdem, wie genau Sie es wollen, sollten Sie eine oder mehrere Möglichkeiten nutzen, um das zu sichern. Persönlich nur für Besucher zählen SESSION sollte gut gehen. In der Regel werden zusätzliche Methoden wie “Abstimmung” verwendet, um doppelte Stimmen zu verhindern.

Der richtige Weg “Postsichten zu zählen” besteht darin, sie nicht manuell zu zählen, sondern zum Beispiel PIWIK / Google Analytics zu verwenden, um Besucher zu verfolgen und dann über die API dieses Tools die Zeiten, zu denen die URL angezeigt wurde, auszulesen und das Ergebnis anzuzeigen.

Das wäre wirklich mehr als manuell zu zählen.