WPPでランキング表示できなくなっていた!
WordPress Popular Postsプラグイン(略してWPP、以下WPPと言います)は、人気の記事を1日、1週間、1ヶ月といった期間で自動的に集計してランキング表示するプラグインです。やはり人気のある記事はより多く露出させて多くの読者にアピールしたいものです。当ブログでも右側のウィジットに独自にカスタマイズして作ったランキングを「昨日のランキング」として表示させていたのですが、いつのまにか”一致するものはありません!”とエラーがでていました。これがいつからなのかわかりませんが、使用しているバージョンは3.3.4です。以前は正しく表示していたので、たぶんプラグインの更新によって引き起こされたのは間違いありません。読者のみなさんのWPPは正しく動いていますか?ネットで動かなくなった原因を検索
「Wordpress Popular posts データがありません」とか「Wordpress Popular Posts カウント 正しくない」とか「Wordpress Popular posts 人気記事が表示されない」といったキーワードでGoogle検索するといくつかのサイトが表示されますので、これを参考に主な原因を探ってみたところ以下の3つがおもな原因1.カウント対象のユーザーが正しくない
WPPは、カウント対象のユーザを設定しなければなりません。これはツールメニューの中の「閲覧を記録する対象者」という設定で、- 訪問者のみ
- ログインユーザーのみ
- 全員
2.他のプラグとバッティングして動作しない場合
次が他のプラグインとの相性の問題です。これを確かめるのは簡単でWPPと本当に必要なプラグイン意外全部非アクティブにして動かしてみるとわかります。特にキャッシュ系のプラグインによりスクリプトが動かないという現象は非常に多いです。もし正常に動作すれば、どのプラグインとバッティングしているのか特定します。これは1個ずつプラグインを戻して動きをみるというような地道な作業によります。3.一度旧バージョンに戻してみる
ネットで調べてみると以外と多くのサイトで紹介されていたのが、一度旧バージョンに戻してみるという方法です。現在のバージョンを取り消して古いバージョンをインストール、その後、最新のバージョンに更新するという手順になります。これで今までカウントしなかったWPPがカウントするようになるみたいです。実は私もこの方法をとったら一部症状が改善しました。WPPで使用するデータベーステーブルは3つあります。- wp_popularpostsdata
- wp_popularpostscache
- wp_popularpostssummary
WPPがまちがった記事をカウントする場合の解決方法
WPPは集計期間を1日とした場合、上記のwp_popularpostssummaryテーブルを参照するのですが、ここにアクセスした記事の記録が1件だけ登録してあり別の記事をアクセスして表示してもこの最初の記事をカウントしてしまうという現象が発生しました。この問題は他のブログでは扱っていないので、自己解決するしかありません。 いろいろと試してみた結果、wp_popularpostssummaryテーブルの先頭のIDというフィールドに、AUTOINCREMENTという属性が抜けているのが原因でした。これはphpMyAdminで次のSQL文を実行すると直ります。なお、このSQL文を実行するには一度全データが削除されてしまうことに注意してください。TRUNCATE wp_popularpostssummary;
ALTER TABLE wp_popularpostssummary CHANGE `ID` `ID` BIGINT( 20 ) NOT NULL AUTO_INCREMENT ;
上記SQL中のテーブル接頭辞wp_は、自分の環境に合わせてお使いください
今回の原因の対応まとめ
今回どのような所を対応したかまとめると- 一度最古のバージョン2.3.7をインストール
- 最新のバージョン4.0.3に更新
- wp_popularpostssummaryのIDフィールドのAUTOINCREMENT属性を確認。もし付いてなければSQLでテーブルを修正