WPPが正しくカウントしない場合の適切な対応

最近はまったWordpressのプラグインWPP(Wordpress Popular Posts)プラグインが正しくカウントしなかった件の対応で、私が見つけた対応方法をお知らせします。

Initializing...

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は、カウント対象のユーザを設定しなければなりません。これはツールメニューの中の「閲覧を記録する対象者」という設定で、

  1. 訪問者のみ
  2. ログインユーザーのみ
  3. 全員

の3つから選択出来ます。例えばログインユーザーのみであれば、ブログの管理者の閲覧はカウントするけど一般訪問者のカウントはしないという設定ということになります。

カウントするユーザの設定(WPP)

現在の設定を確認するには、上図の①から④の順番のとおり設定WordPress Popular Postsツール閲覧を記録する対象者とし、設定を確認します。

2.他のプラグとバッティングして動作しない場合

次が他のプラグインとの相性の問題です。これを確かめるのは簡単でWPPと本当に必要なプラグイン意外全部非アクティブにして動かしてみるとわかります。特にキャッシュ系のプラグインによりスクリプトが動かないという現象は非常に多いです。もし正常に動作すれば、どのプラグインとバッティングしているのか特定します。これは1個ずつプラグインを戻して動きをみるというような地道な作業によります。

3.一度旧バージョンに戻してみる

ネットで調べてみると以外と多くのサイトで紹介されていたのが、一度旧バージョンに戻してみるという方法です。現在のバージョンを取り消して古いバージョンをインストール、その後、最新のバージョンに更新するという手順になります。これで今までカウントしなかったWPPがカウントするようになるみたいです。実は私もこの方法をとったら一部症状が改善しました。WPPで使用するデータベーステーブルは3つあります。

  • wp_popularpostsdata
  • wp_popularpostscache
  • wp_popularpostssummary

このうち、今使用している3.3.4では真ん中のwp_popularpostscacheテーブルは使用していないようです。まず最初の現象はいずれのテーブルにも新たにアクセス記録がされることはなかったのですが、バージョン2.3.7(執筆時点でダウンロードできる最古のバージョン)にしたらwp_popularpostsdataテーブルにアクセスが記録出来るようになりました。次にプラグインを更新して最新のバージョン4.0.3にしたらwp_popularpostssummaryにもアクセスの記録ができるようになりました。しかし問題はまだ残っていました。wp_popularpostssummaryテーブルに記録される記事IDがまちがっていました。どの記事にアクセスしても違う記事のカウントがアップするだけです。こういった現象にはまっている人はいませんか?

実はこの記事のメインテーマは、次のWPPが間違った記事をカウントする場合の原因の解決です。

WPPがまちがった記事をカウントする場合の解決方法

WPPは集計期間を1日とした場合、上記のwp_popularpostssummaryテーブルを参照するのですが、ここにアクセスした記事の記録が1件だけ登録してあり別の記事をアクセスして表示してもこの最初の記事をカウントしてしまうという現象が発生しました。この問題は他のブログでは扱っていないので、自己解決するしかありません。

wp_popularpostssummaryテーブル内容

 

いろいろと試してみた結果、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_は、自分の環境に合わせてお使いください

今回の原因の対応まとめ

今回どのような所を対応したかまとめると

  1. 一度最古のバージョン2.3.7をインストール
  2. 最新のバージョン4.0.3に更新
  3. wp_popularpostssummaryのIDフィールドのAUTOINCREMENT属性を確認。もし付いてなければSQLでテーブルを修正

という対応でWPPが正しくカウントしない件が解決しました。

以上

 

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

スポンサーリンク
ページ上部へ戻る