質問するログイン新規登録

Q&A

1回答

262閲覧

WPで実装したサイトの訪問者数のリアルタイムカウント表示

ibis_masuda

総合スコア5

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2025/09/24 01:07

0

0

実現したいこと

WPで実装したサイトのリアルタイム訪問者数をサイトに表示したいです。

発生している問題・分からないこと

Xserverで構築したオリジナルテーマのWPサイトに、リアルタイムの訪問者数を表示するために、
以下のコードを記述しました。
しかし、数日ほど訪問が確認できたのですが設置した、counter.txtの数値が急に994や1000など初期値の数字より減って関係のないと思われる数字が表示されてしまいます。

どのような原因が考えられるか、コードを修正して解消できるのかご教示いただけますと幸いです。
また、他に確認すべき情報があれば教えてください。

・手元のテスト環境では問題再現せず、相手環境だけで発生
・サーバパネルには入れません。(wpの管理画面はアクセスでき、FTPでサーバ接続済み)
・counter.txt のパーミッションは644です。
・memory_limit:1G
・同時アクセスが極端に多いサイトではない
・意図的に、counter.txtを手動で書き換えはしていません。

どうぞよろしくお願いいたします。

エラーメッセージ

error

1エラーメッセージは確認できませんでした。

該当のソースコード

php

1<p class="header-nav__top-txt"> 2 あなたは<span> 3 <?php 4 session_start(); 5 6 $file = ABSPATH . 'wp-content/uploads/counter.txt'; 7 $today = date('Y-m-d'); 8 9 // 初期値の設定(旧サイト訪問者数からの続きにしたい) 10 if (!file_exists($file)) { 11 file_put_contents($file, 920, LOCK_EX); 12 } 13 14 $count = (int)file_get_contents($file); 15 16 // 今日初めての訪問かどうか判定 17 if ( 18 (!isset($_SESSION['visited_date']) || $_SESSION['visited_date'] !== $today) && 19 (!isset($_COOKIE['visited_date']) || $_COOKIE['visited_date'] !== $today) 20 ) { 21 $count++; 22 file_put_contents($file, $count, LOCK_EX); 23 $_SESSION['visited_date'] = $today; 24 setcookie('visited_date', $today, time() + 86400, '/'); 25 } 26 27 echo $count; 28 ?> 29 </span>人目の訪問者です! 30 </p> 31 32

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

最終的にLOCK_EXを入れたのですが、上書きされてしまいます。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

(動作確認はしていません。ソースを見ただけの回答になります。)

まず、PHPのバージョンに依存した処理は無いように見えます。

WordPressのプラグインで、キャッシュ系のプラグインは使用していますか?
もしかしたら、このPHPを書いたページかcounter.txtがキャッシュされていて、古い値(をインクリメントした値)で上書きされているのかもしれません。
その場合は、このPHP処理を外出しして、外出ししたファイルやcounter.txtをキャッシュ対象外に設定できるか確認してください。
(外出ししなくても、そのページ自体をキャッシュ対象外にしてもいいかもしれない)

投稿2025/09/27 04:22

編集2025/09/27 04:25
hiroki-o

総合スコア1645

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ibis_masuda

2025/09/28 11:34

回答ありがとうございます。 試したところ問題が解決しました! ベストアンサーに選ばせていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問