毎日モザイク

White Room Layout Works

2009-04-22T17:20:49+09:00 [Wed]
--> [WordPress]

WP-Click-Tracker

リンクのクリックを記録する、wp-click-trackerですが、なかなか楽しいです。

a-blogタンも採用していましたが、どのリンクがクリックされたかがわかって、いい塩梅です。何の役に立つってわけでもないんですが……。

とっても立派なwp-click-trackerですが、ちょっとハードコーディングが目立ちます。

0.4.2で修正されましたが、admin.inc.phpのダッシュボードのウィジェットからのリンクがトップレベルに設置するのを前提にハードコーディングされていて、設置場所を変更すると(http://example.com/ からhttp://example.com/example/へ)リンク先が変わって、表示されなくなりました。

同じようなのが、0.4.2でも残っています。SQLを発行するところで、テーブル名がwordpressのデフォルト名でハードコーディングされています。

/* admin.inc.php 593line */
$sql = "SELECT weekday(click_date) AS Day,COUNT(weekday(click_date)) AS CLICKCOUNT FROM `wp_tracking_clicks` WHERE link_id = '".$wpdb->escape($link_id)."' GROUP BY Day ORDER BY Day";

/* admin.inc.php line 634 */
	$sql = "SELECT HOUR(click_date) AS Hour,COUNT(HOUR(click_date)) AS Clicks FROM `wp_tracking_clicks` WHERE link_id = '".$wpdb->escape($link_id)."' GROUP BY Hour ORDER BY Hour";

/* admin.inc.php  line 799 */
	$sql = "SELECT COUNT(tc.link_id) AS click_count, date_format(click_date,\"%Y-%m-%d\") AS click_date_f FROM wp_tracking_clicks tc, wp_tracking_links tl WHERE tc.link_id = tl.link_id AND date_format(click_date,\"%Y-%m-%d\") >= '$date' GROUP BY click_date_f ORDER BY click_date ";

/* admin.inc.php  line 841 */
	$sql = "SELECT COUNT(tc.link_id) AS click_count, date_format(click_date,\"%Y-%m-%d\") AS click_date_f FROM wp_tracking_clicks tc, wp_tracking_links tl WHERE tc.link_id = tl.link_id AND date_format(click_date,\"%Y-%m-%d\") >= '$date' GROUP BY click_date_f ORDER BY click_date ";

/* admin.inc.php  line 882 */
		$sql = "SELECT COUNT(click_id) AS click_count,wp_tracking_clicks.link_id AS link_id, date_format(click_date,\"%Y-%m-%d\") AS click_date, link_title, link_destination, click_refer FROM wp_tracking_links,wp_tracking_clicks WHERE wp_tracking_links.link_id = wp_tracking_clicks.link_id AND date_format(click_date,\"%Y-%m-%d\") = '$date' AND click_refer != '' GROUP BY wp_tracking_clicks.link_id ORDER BY click_count LIMIT 8";

/*
$wpdb->prefix."tracking_clicks
$wpdb->prefix."tracking_links
と、したほうがいい所が、それぞれ、wp_tracking_clicks、wp_tracking_linksになっている。
*/

デフォルトで使っていれば、なんの問題もないのですが、wordpressはインストール時にテーブルのプレフィックスを変更できるようになっているので、ここは変数で拾ってくるべきでしょう。っていうか、click-tracker.phpのほうはそうなってるし……。

と、いったようなことを、機械翻訳で作者のブログにコメントしたら、SPAMと判断されたらしく、消されちゃいましたw。

英語もできないのに、無理しないで、以前、よそでバグを指摘したときみたいに、動かない原因のコードに←いまここみたいな感じで指摘するのが無難かも……。

2 Comments

  1. Eric Lamb より:

    Wow, thanks for the critique; I always welcome it :)

    I have actually fixed the hard coded table calls in the upcoming 0.5 release (it should be out in a couple days).

    Thanks again,
    Eric Lamb

    • なんば。 より:

      Please read on Machine translation.

      以前、そちらにコメントしたのですが、書き方が悪くて、
      表示が崩れてしまい、すみませんでした。
      見つけていただいて、うれしいです。
      お役に立てて幸いです。

      Thank you.