2010年6月アーカイブ

WordPless に Counterize II を導入してみたけれど、Windows 7 がカウントされていない。 またGoogle ChromeもMac上のSafariとしてカウントされている。
と、いう事に気づいたのでソースを修正してみた。
表示を期待通りにするためには、ソースの修正のほかにもデータベースのテーブル`wp_Counterize_UserAgents` にすでに記録されているレコードの修正も必要。 Windows 7のレコードは`name`に'NT 6.1'が含まれるレコードを探して`osVersion`を'7'に書き換える。
Clomeの方は`name` に 'Chrome' の含まれるレコードを探して、`browserName` 、`browserCode`、`browserVersion`、`osName`、`osCode`、`osVersion`をそれぞれ書き換えること。

ちなみにうちで見つけた Chrome のUAはこうなってました。
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.70 Safari/533.4

以下ソースの変更点(追加のみ)
ファイル名: browsniff.php

関数: function counterize_detect_browser ($ua)
位置: 170 行目辺り

        } elseif (preg_match('#(Firefox|Phoenix|Firebird)/([a-zA-Z0-9.]+)#i', $ua, $matches)) {
                $browser_name = 'Mozilla Firefox';
                $browser_code = 'firefox';
                $browser_ver = $matches[2];
                if (preg_match('/Windows/i', $ua)) {
                        list($os_name, $os_code, $os_ver) = counterize_windows_detect_os($ua);
                } else {
                        list($os_name, $os_code, $os_ver) = counterize_unix_detect_os($ua);
                }
// ここから追加 } elseif (preg_match('#Chrome/([a-zA-Z0-9.]+)#i', $ua, $matches)) { $browser_name = 'Google Chrome'; $browser_code = 'chrome'; $browser_ver = $matches[2]; if (preg_match('/Windows/i', $ua)) { list($os_name, $os_code, $os_ver) = counterize_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = counterize_unix_detect_os($ua); } // ここまで
} elseif (preg_match('#Minimo/([a-zA-Z0-9.]+)#i', $ua, $matches)) { $browser_name = 'Minimo'; $browser_code = 'mozilla'; $browser_ver = $matches[1]; if (preg_match('/Windows/i', $ua)) { list($os_name, $os_code, $os_ver) = counterize_windows_detect_os($ua); } else { list($os_name, $os_code, $os_ver) = counterize_unix_detect_os($ua); } 関数: function counterize_windows_detect_os ($ua) 位置: 505 行目辺り } elseif (preg_match('/Windows.98/i', $ua) || preg_match('/Win98/i', $ua)) { $os_name = "Windows"; $os_code = "windows"; $os_ver = "98";
// ここから追加 } elseif (preg_match('/Windows NT 6.1/i', $ua)) { $os_name = "Windows"; $os_code = "windows"; $os_ver = "7"; // ここまで
} elseif (preg_match('/Windows NT 6.0/i', $ua)) { $os_name = "Windows"; $os_code = "windows"; $os_ver = "Vista";

いろんなブラウザでアクセスしてみて

連絡先

nakanohito