さんまがおいしい季節だねー(´・ω・`)

テーマを改造してWordPressログイン時はAdSense非表示で⊂(^ω^)⊃セフセフ!!

Google,WordPress — タグ: , — さくら @ 2011/06/21 16:41

(・ω・)コンヌツワ
暑いですねー

最近あんまブログ書く気にならなかったので AdSense をペタペタ貼ってみました。元から一部の記事に AdSense を仕込んでたのですが、全記事のサイドバーと下の方にドバっと入れてみた感じです。

ところでウェブサイトに AdSense を入れると誤クリックしないか結構気になったりします。間違ってクリックしたら Google に連絡しないといけませんしマウスの誤操作が多めですので、自分の AdSense を置いたサイトはビクビクしながら見てます。

作って放置系のサイトならサイトを見る自体ほとんど無いので別に良いのですが、ブログとかだとプレビューする時に開いたり閉じたりを繰り返しますので、できれば自分でログインした際は AdSense 自体を無効にしたいんですよね…ということでしてみました。

普段こういう改造をする時はプラグインを作って対応することが多いのですが、面倒くさかったので今回は直接テーマを改造する方向で作業してみました。実装した内容はこんな感じです。

  1. ログインしている場合は AdSense を表示しない
  2. 一覧ページと個別記事ページで AdSense の表示内容を変える
  3. サイドバーウィジェットにも AdSense を表示する

なお、WordPress をマルチユーザーで運用している場合のことはまったく考慮していませんので、あしからず。

functions.php に AdSense 表示判定関数を追加する

まず [テーマの編集] から [テーマのための関数 (functions.php)] に AdSense を表示する判定関数を追加します。

function is_adsenseable() {
    if (is_feed()) {
        return false;
    }
    $user = wp_get_current_user();
    if ($user && isset($user->ID) && $user->ID) {
        return false;
    }
    return true;
}

Feed 用 AdSense とかあるので is_feed() で RSS 出力時を除外します。RSS でなければ wp_get_current_user() でログインしているか判定してログインしていない時だけ AdSense を表示可能と判定します。

マルチユーザーで運用されている場合は $user の判定をゴニョっとすればいけると思いますが、ゴニョっとする方法はご自身でお調べください。

コンテンツに AdSense を入れる

一覧ページと個別記事ページで AdSense の表示内容を変えるため、is_singular() と先ほど作った is_adsenseable() で AdSense の表示条件を変更します。

まず一覧用の AdSense はこんな感じ。!is_singular() で一覧かどうか判定しています。<script> タグは Google AdSense のスニペットそのままです。

以下のコードを [テーマの編集] から [メインインデックスのテンプレート (index.php)] の適当な場所に入れます。うちのブログでは「次のページ」リンクの前に入れてます。

<?php if (!is_singular() && is_adsenseable()) : ?>
<script type="text/javascript"><!--
google_ad_client = "ca-pub-...";
/* Banner */
google_ad_slot = "...";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<?php endif ?>

次に記事表示用の AdSense。is_singular() が true なら個別記事と判定しています。

こちらも [メインインデックスのテンプレート (index.php)] の適当な場所に入れます。うちのブログではコメントの前に入れてます。

<?php if (is_singular() && is_adsenseable()) : ?>
<script type="text/javascript"><!--
google_ad_client = "ca-pub-...";
/* Rectangle */
google_ad_slot = "...";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<?php endif ?>

サイドバーに AdSense を入れる

サイドバーに AdSense を入れるだけなら大してややこしい話では無いのですが、デフォルトのテキストウィジェットには PHP コードを含めることができないため、ログイン状態判定を行うことができません。

なんで PHP Text Widget プラグインをインスコして、テキストウィジェット中に PHP を直接書けるようにしてみました。(ウィジェット中の PHP を制御するプラグインは他にも色々ありますので他のやつでもいーです。)

このプラグインをインスコするとテキストタイプのウィジェットに PHP コードを書くと普通に実行されるようになります。

先ほどの is_adsenseable() で AdSense を表示するを判定するコードとサイドバー用 AdSense のスニペットをウィジェットに書き込みます。

<?php if (is_adsenseable()) : ?>
<script type="text/javascript"><!--
google_ad_client = "ca-pub-...";
/* WideScraper */
google_ad_slot = "...";
google_ad_width = 160;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<?php endif ?>

P.S.

なんとなく完全にポックンのご要望に答えてくれるプラグインもありそうですが、テーマ直す方が調べるよりも速かったので、ってことで。

あと、もう一ヶ所 AdSense 貼れるんすが、
どこに貼りましょうか(*´・ω・)(・ω・`*)ネー

1件のコメント »

  1. drUvnaQyIyWljFurJi 4010

    コメント by HQlkxSgSeVVlBxg — 2014 年 10 月 5 日 @ 17:34

この投稿へのコメントの RSS フィード。 TrackBack URI

コメントする

Copyright © 2017 さくらたんどっとびーず | powered by WordPress with Barecity