ログイン状態の時にアナリティクスとアドセンスのコードを非表示にする

ワードプレスを運用してると投稿した記事がきちんと表示されているかどうかを確認することと思います。特にコードを記入するケースでは「文字実体参照」への変換をしていないと、記入したはずのコードがワードプレスの仕様によって丸ごと消されることがあります。確認してても気づかないこともありますので、やはり投稿記事の確認は必須と思われます。

しかし、確認しながらページの移動をしていると無駄にアドセンスが表示されて、若干、移動しにくくなります。しかも、単に自分の記事を確認するだけで、アドセンスの誤クリック率をわずかでも高めてしまうリスクがあります。アナリティクスのほうは、IP制限などによって自分のアクセスを除外することも出来ますが、仕事などの関係で他の回線を使うこともあると思います。そうなると、自分で無駄にアクセスを稼いでしまって、アナリティクスのアクセス解析が正確なものとは言えなくなってしまう可能性も出てきます。いずれにしても、除外できるのであれば除外したいものです。

その悩みを解決する一つの方法として、ワードプレスの関数を使うという手があります。条件分岐が利用できる「is_super_admin($user_id)」「is_user_logged_in()」「get_current_user_id()」などがそうです。

「is_super_admin($user_id)」

is_super_admin($user_id)は、ネットワーク管理者であるかどうかを判定します。特権管理者であればtrue、それ以外はfalseを返します。$user_idを省略した場合は現在ログインしているユーザーに権限があるかどうかを調べ、権限があればtrueを返します。ネットワークモードが無効化されている場合、つまり通常のシングルサイトでは、ユーザーが管理者かどうかの判定をします。

PHP
1
2
3
4
5
6
7
<?php
if(!is_super_admin()){
// アナリティクスやアドセンスなどのコード
}else{
// ログイン管理者専用の内容。無ければ空白、もしくはelse以降を取り除いても問題ありません。
}
?>

管理者のみアナリティクスなどが非表示になります。

「is_user_logged_in()」

is_user_logged_in()は、現在の訪問者がログインしているかどうかを「turue」と「false」で返してきます。つまり、ログインしていれば「turue」、していなければ「false」を返します。引数はありません。

PHP
1
2
3
4
5
6
7
<?php
if(!is_user_logged_in()){
// アナリティクスやアドセンスなどのコード
}else{
// ログインユーザ専用の内容。無ければ空白、もしくはelse以降を取り除いても問題ありません。
}
?>

ログインしている全てのユーザーでアナリティクスなどが非表示になります。

「get_current_user_id()」

get_current_user_id()関数を使うと、ログインしているユーザーのIDを取得します。ログインしていなければ0が返されます。

PHP
1
2
3
4
5
6
7
<?php
if(get_current_user_id()!==1&&get_current_user_id()!==2){
// アナリティクスやアドセンスなどのコード
}else{
// ログインユーザ専用の内容。無ければ空白、もしくはelse以降を取り除いても問題ありません。
}
?>

こちらはget_current_user_id()によって取得したユーザーIDごとに設定します。ユーザーIDの「1」は大抵、管理者です。しかしワードプレスのインストール後に作成した別のIDを持つ管理者によって元々存在した管理者を削除しているケースなどでは番号が異なることもあります。念のため、phpMyAdminの「wp_users」で登録されているIDとユーザー名を確認してみるのが確実です。ワードプレスのマルチサイトの管理画面では、特権管理者のID「1」は確認できないようです。それ以外のIDは、ユーザー一覧の編集リンクにポインターを当てると、画面下などへ現れるURLの一部に「user_id=2」といった形で挿入されているのですぐに分かります。この例では、「2」というのがIDです。また、アドセンスなどを表示させたくないログインユーザーを複数指定するには、上記のように「&&(and)」演算子でつなげて下さい。「||(or)」演算子ではすり抜けてしまいます。


尚、条件分岐内の各関数で「!」の 論理否定演算子を使っていますが、これはアドセンスのコードを上に持って行った方が、アドセンスの収益テストなどの理由でコード張り替えの時に少しだけ手間が省けて都合が良いからです。論理否定演算子を取り除いて、条件分岐の内容を上下にひっくり返しても問題ありません。