![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
このウェブサイトを開設してからプログラミングの情報を掲載のするのは初めてのような気もしますが、恐らく有用な情報だと思いますので、参考までに掲載します。
WordPressというブログ/CMS(コンテンツマネージメントシステム)を使ってアクセス解析をする際に、人気のあるプラグインの一つがWP-SlimStat-Ex V2.0です。韓国の方が開発をされて最新版はVersion 2.0となっています。
私もこのプラグインを使っているのですが、最近になって、このプラグインの出力結果で特定のいくつかのページが表示されないことがあることに気付きました。
MySQLのデータベースの内容やPHPのソースを追ってみると、どうもデータベースには正しくアクセスログが記録されているようですが、PHPのソースコードで解析結果を出力する時に特定のページを除外しているようです。
具体的には、wp_resourceというテーブルに記録をとった各べージ情報のURLやタイトルなのどの情報が記録されるのですが、どうも、このテーブルの最初の2件(IDが0と1)の情報を除外して結果出力しているようです。 最初の2件にどのページが来るかは、アクセスログの登録順になりますので、全くの偶然になります。
私のケースの場合はトップページがこの2件のうちの一つに登録されたので、出力結果でトップページが出てこないので気付きました。
対策として以下の事を行いました。
「lib\module.php」で「.resource NOT IN (0,1)」を検索すると、該当箇所が7カ所ありますので、その部分のSQL文の「ts.resource NOT IN (0,1) AND」を削除(以下に例を示します)
WHERE ts.referer <> ”
AND ts.resource NOT IN (0,1) ts.domain <> ”
AND
「pins\SSPathStats\pin.php」で「.resource NOT IN (0,1)」を検索すると、該当箇所が1カ所見つかるので、同様にSQL文の条件を削除。
$query .= " AND ts.visit < ".( $max_visit – ($this->rows * $offset) );
$query .= " AND ts.resource NOT IN (0,1) ";
$query .= " AND ".$filter_clause." ";
上記対策で、無事に全てアクセスログが出力されるようになりました。(と思います)
果たして何故、特定のページだけ除外するようなSQL条件が入っているのかは不明です。今後、作者である韓国の方に問い合わせをしてみようと思いますが、何かご存じの方、上記対策をやってみてうまくいった事例、うまくいかなくなった事例など情報があれば、コメントをいただければと思います。