Google Analytics:几种过滤自己访问的方法

有些博主可能希望 Google Analytics 不要记录自己的访问,下面是我发现的一些方法。

WordPress专用:修改模版

如果你的站点是 WordPress 搭建的,那么可以通过修改模版代码的方式来实现。思路就是,当只有非登录用户访问时才输出统计代码;如果是已登录用户访问,则不输出统计代码。

例如,如果你是通过修改header.php添加的统计代码,那么只需要改成这样:

<?php if (is_user_logged_in()): ?>

<!-- Google Analytics Tracking Code -->

<?php endif; ?>

嗯,其实就是加一个is_user_logged_in函数,这是 WordPress 内置的函数,用途是判断用户是否已登录。所以,只要你每次访问都保证登录就可以了。比如,你的博客地址为example.com,那么每次你可以先直接访问example.com/wp-admin登陆一下。

如果你的博客开放注册,那么可能需要用current_user_can('manage_options')

因为 PHP 和 JavaScript 都支持读写 Cookie,所以这也是个好办法。你可以给自己设置一个特殊的 Cookie,然后实现根据 Cookie 判断是否统计的代码。对于 PHP 页面,可以在后台判断,如果存在你设定的 Cookie 则不输出统计代码;对于静态页面,可以用 JavaScript 判断,如果存在你设定的 Cookie 则不执行统计代码。

需要注意的是,必须在自己的网站的域内设置 Cookie 才有效;不同域名下的 Cookie 是不共享的。

例如,下面的 PHP 脚本将会设置一个 Cookie DO_NOT_TRACK,过期时间为一年:

<?php
    set_cookie('DO_NOT_TRACK', 'true', time() + 3600 * 24 * 365);
?>

访问一次之后,一年以内只要不清空的话 Cookie 都会在。然后,你可以选择自己喜欢的方法:

PHP 判断:

<?php if (isset($_COOKIE['DO_NOT_TRACK'])): ?>

    <script>/* Tracking Code */</script>

<?php endif; ?>

或者 JavaScript 判断:

if (document.cookie.indexOf("DO_NOT_TRACK") > -1) {
    /* Tracking Code */
}

用于 Universal Analytics 的方法

如果你已经升级到了 Universal Analytics,那么也可以利用 Google 官方提供的一个技巧来实现。具体来说就是:如果把下面这个值设为true,那么访问信息就不会发送给 Google(需要先把 UA-XXXX-Y 设为你自己的编号):

window['ga-disable-UA-XXXX-Y'] = true;

为了只对自己执行这句话,同样可以通过 Cookie 来完成。例如:

<?php if (isset($_COOKIE['DO_NOT_TRACK'])): ?>

    <script>window['ga-disable-UA-XXXX-Y'] = true;</script>

<?php endif; ?>

或者:

if (document.cookie.indexOf("DO_NOT_TRACK") > -1) {
    window['ga-disable-UA-XXXX-Y'] = true;
}
本文作者为,最后修订于

讨论