「WordPress Popular Posts」をバージョンアップして「Sorry. No data so far.」と表示される場合の対応


この記事は2016年8月に掲載されたものです。
状況が変わったり、リンク先が変わっている可能性があります。

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にダウングレードしてからバージョンアップすると直るという説も書かれているが、最新バージョンはテーブルの構造自体が異なるので、それは関係ない。