WordPressで人気記事を表示するプラグイン「WordPress Popular Posts」を、バージョン2.3.7から最新の3.3.4にしたところ、過去24時間・7日・30日・累計という4種類の閲覧数のうち累計以外がリセットされ、設定画面やウィジェットで「Sorry. No data so far.」と表示される。症状としては下記と同じだ。
みてみた「【備忘録】データ反映されてないWordPress Popular Posts ”Sorry. No data so far”」
こういう場合は、データベース(MySQL)を直接確認するに限る。phpMyAdminでアクセスしたところ、バージョン2.3.7と3.3.4では使用するテーブルが異なることがわかった。
(バージョン2.3.7)
popularpostsdata ⇒累計データ
popularpostsdatacache ⇒日別データ
(バージョン3.3.4)
popularpostsdata ⇒累計データ
popularpostssummary ⇒日別データ
日別データを保存しているテーブルが異なるため、バージョンアップ後は過去24時間・7日・30日が読み込めず、リセットされたように見えるのだ。なお、WebARENA SuiteX標準データベースでは、popularpostssummaryが作成されるまで少し時間がかかった。popularpostssummaryはテーブルタイプにInnoDBが指定されており、作成まで時間がかかるのかも知れない。
こんなときはあわてず、まずはphpMyAdminでpopularpostsdataとpopularpostsdatacacheをバックアップしよう。バージョンアップしただけでは、popularpostsdatacacheは削除されない。データベース全体をSQL形式でバックアップするとテーブルごとのリストアが面倒なので、テーブル単位でCVS形式でエキスポートしよう。
次に、旧バージョンに戻すか、最新バージョンにデータ移行するかを決める。対応はそれぞれ次のとおり。
- 旧バージョンに戻す場合
WordPress Popular Postsの旧バージョンをダウンロードし、ローカルでZIPファイルを解凍してから、FTPクライアントソフトでサーバ上のバージョン3.3.4と入れ替える。このとき、WordPressの管理画面から新規追加・停止・削除などを操作してはいけない。テーブル自体が削除される恐れがある。必ずFTPで中身だけを入れ替えること。
なお、プラグインの旧バージョンは「開発情報」のページからダウンロード出来る。ここでは2.3.7までしか表示されていないが、ダウンロードファイルのバージョン番号を変えれば、任意のバージョンを落とせる。
https://downloads.wordpress.org/plugin/wordpress-popular-posts.2.3.7.zip
(例)末尾を「2.3.6.zip」にすれば、バージョン2.3.6をダウンロード出来る。 - 最新バージョンにデータ移行する場合
エキスポートしたpopularpostsdatacacheをpopularpostssummaryのデータ形式にコンバートし、phpMyAdminでインポートする。
(popularpostsdatacache)
フィールド名 説明 データ例 id WordPressの記事ID 1 day 日別最終アクセス 2016-08-10 08:21:54 day_no_time dayから時間を取ったもの 2016-08-10 pageviews 日別ページビュー 10 (popularpostssummary)
フィールド名 説明 データ例 id 任意のID(連番で構わない) 1 postid WordPressの記事ID 1 pageviews 日別ページビュー 10 view_data last_viewedから時間を取ったもの 2016-08-10 last_viewed 日別最終アクセス 2016-08-10 08:21:54 編集はExcelで簡単に出来るだろう。CSV保存時にフィールド囲み記号をダブルクォーテーションにするには、まずExcel[セルの書式設定]⇒[表示形式]⇒[ユーザー定義]で、「種類」の「@」を「’@’」にする。こうすればセル内で前後にシングルクォーテーションが付くので、これをCSV形式で保存してからエディタで開き、ダブルクォーテーションに置換すればよい。Excelだけではダブルクォーテーション囲みに出来ない。
ネット上では、バージョン2.1.4にダウングレードしてからバージョンアップすると直るという説も書かれているが、最新バージョンはテーブルの構造自体が異なるので、それは関係ない。