混乱してます。
方法はいろいろあると思いますが、
まずは、
管理者のアクセス時には広告を表示させない。
ということがシンプル。
📝 WordPress 組み込み関数によるタグ記述
以下を使うといい。
current_user_can( string $capability, mixed $args ): bool
👉 current_user_can() | Function | WordPress Developer Resources
管理者でログインしている状態を判別したい場合は、
current_user_can('administrator')
で、アクセスしている人を判別できます。
📝 WordPress テンプレートに埋め込む場合
自動広告の場合は以下のように埋め込みます。
<?php if (!current_user_can('administrator')): ?>
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<script>
(adsbygoogle = window.adsbygoogle || []).push({
google_ad_client: "ca-pub-XXXXXXXXXX",
enable_page_level_ads: true
});
</script>
<?php endif; ?>
自動広告ではない場合でも同じように、
<?php if (!current_user_can('administrator')): ?>
// Adsense コード
<?php endif; ?>
の形式で書けば管理者からのアクセス時には表示されません。
📝 WordPress ウィジェットに埋め込む場合
functions.php で定義しておきます。
// functions.php
function adsense_shortcode() {
$code = '
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-XXXXXXXXXX" crossorigin="anonymous"></script>
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-XXXXXXXXXX"
data-ad-slot="YYYYYYYYYY"
data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
';
return current_user_can('administrator') ? '' : $code;
}
add_shortcode('adsense', 'adsense_shortcode');
ウィジェット側ではショートコード形式で呼び出します。
<div>[adsense]</div>
管理者でログインしていない場合は空文字を表示します。
📝 まとめ
管理者としてログインしていないブラウザでは有効ではありません。
逆にいえば、管理者としてログインしてなければ参照できます。
レイアウトなど確認したいときでも、最小限にしておくべきです。
クリックは当然禁物です。