WordPress

WordPressで特定の記事だけアドセンスを非表示にして、別の広告を表示させる方法

アドセンスは規約が厳しいので、記事内で好き放題アレコレ書いていい、というわけにはいきません。
規約に反した内容の記事にアドセンスを掲載していると、『警告メール』が来たり、最悪の場合『アカウント停止』なんて事態に陥ってしまうことも…。

怖いですよね~。

規約違反しなければ問題ないんですけど、ブログを書いているとそんな内容の記事を書きたいときもあるじゃないですか。
そんな記事のときは、アドセンスを非表示にしておけば大丈夫みたいです。

そこで、特定の記事だけアドセンスを非表示にできるようにカスタマイズしてみました。

プラグイン「Advanced Custom Fields」でこんなチェックボックスを作成すれば、アドセンスを非表示にしたいときは投稿画面でチェックを入れるだけで簡単に非表示にできます。

このページでは、カスタムフィールドを使って記事ごとにアドセンスを非表示にして、代わりに別の広告を表示させる方法を解説しています。

参考サイト

カスタムフィールドを作成してアドセンスを非表示にする方法は、こちらの記事を参考にさせていただきました。
ありがとうございます。

【WordPress】記事ごとにアドセンスの表示・非表示を設定し、代替広告を表示するカスタマイズ

カスタムフィールドを作成

まずは、プラグイン「Advanced Custom Fields」を使い、アドセンスを非表示にするためのチェックボックスを作成していきます。

「Advanced Custom Fields」のインストール手順

WordPress管理画面で[プラグイン][新規追加]をクリック。

検索欄に「Advanced Custom Fields」と入力し、プラグインを検索。

[今すぐインストール][有効化]を行います。

「Advanced Custom Fields」の設定手順

WordPress管理画面に新しく追加された[カスタムフィールド]をクリック。

[新規追加]をクリックします。

[+フィールドを追加]をクリックします。

チェックボックスの作成に必要な項目を入力します。

  • タイトル:アドセンス表示
  • フィールドラベル:表示/非表示の設定
  • フィールド名:noads
  • フィールドタイプ:真/偽
  • フィールド記入のヒント:未記入でOK
  • 必須か?:いいえ
  • メッセージ:アドセンスを表示しない
  • デフォルト値:チェックを外す
  • 条件判定:いいえ

上記のように入力すると、このようなチェックボックスになります。
タイトル、フィールドラベル、メッセージはそれぞれ自分が分かりやすいものに変更してください。

入力できたら、その下のオプションへ移ります。

オプションの項目を下記のように変更します。

  • Style:Standard(WP metabox)

変更できたら、設定は終わりです。

右上の[公開]をクリックして完了。

投稿画面に作成したチェックボックスが追加されているのが確認できると思います。

これで、下準備が整いました。

条件分岐でアドセンスの表示/非表示を切り替える

現時点では、作成したチェックボックスにチェックを入れても、アドセンスは非表示になりません。
チェックで非表示にするためには、カスタムフィールドの設定を反映させて、条件分岐を行う必要があります。

どのようにアドセンスを表示させているかは人それぞれだと思いますけど、例えば下記のように、

<?php if(wp_is_mobile()) { //スマホの場合 ?>
    【ここにスマホ用のアドセンス広告コードを挿入】
<?php } else { //PCの場合 ?>
    【ここにPC用のアドセンス広告コードを挿入】
<?php } ?>

スマホとパソコンで条件分岐させている人が多いんじゃないでしょうか。

この場合は、条件を追加して、

<?php if(get_field('noads')) { //アドセンス非表示の場合 ?>
	【ここにアドセンスの代わりの広告コードを挿入】
<?php } elseif(wp_is_mobile()) { //スマホの場合 ?>
	【ここにスマホ用のアドセンス広告コードを挿入】
<?php } else { //PCの場合 ?>
	【ここにPC用のアドセンス広告コードを挿入】
<?php } ?>

このように変更することで、チェックボックスで非表示が可能になります。

2行目にアドセンス以外の広告コードを挿入すれば、アドセンスが非表示のときに代わりに表示されます。
もちろん2行目を削除して、何も広告を表示させなくても構いません。

 

アドセンスを表示させているコードの修正ができたら、あとは簡単。

記事の投稿画面で作成したチェックボックスにチェックを入れることでアドセンスが非表示になり、代わりの広告を設定している場合はそれが表示されます。

当ブログでのアドセンス表示位置別カスタマイズ

当ブログは、現在『STINGER PLUS+』を利用していて、アドセンスを表示させるためのカスタマイズ記事をいくつか書いてきました。

これらのカスタマイズを参考にしている方は、カスタムフィールドの作成とあわせて、以下のようにコードを差し替えていただくと、チェックボックスでのアドセンス非表示が可能となります。

記事下のダブルレクタングル

【STINGER PLUS+】記事幅を広げて、アドセンスを記事下ダブルレクタングルにしてみた

こちらの記事では、記事下に横並びでアドセンスを表示させるカスタマイズを紹介しています。

アドセンス非表示を可能にするには、カスタマイズ記事内の“個別投稿(single.php)に追記するコード”を変更してください。

<p class="ad-label">スポンサーリンク</p>
<?php if(st_is_mobile()) { //スマホの場合 ?>
	<div class="ad-box">
		【ここにスマホ用広告コードを挿入】
	</div>
<?php } else { //PCの場合 ?>
	<div class="ad-box clearfix">
		<div id="ad-pc-left">
			【ここにPC用広告コード(左)を挿入】
		</div>
		<div id="ad-pc-right">
			【ここにPC用広告コード(右)を挿入】
		</div>
	</div>
<?php } ?>

上記のコードを、下記のコードと差し替えてください。
<?php if(get_field('noads')) { //アドセンス非表示の場合 ?>
	【ここにアドセンスの代わりの広告コードを挿入】
<?php } elseif(st_is_mobile()) { //スマホの場合 ?>
	<p class="ad-label">スポンサーリンク</p>
	<div class="ad-box">
		【ここにスマホ用広告コードを挿入】
	</div>
<?php } else { //PCの場合 ?>
	<p class="ad-label">スポンサーリンク</p>
	<div class="ad-box clearfix">
		<div id="ad-pc-left">
			【ここにPC用広告コード(左)を挿入】
		</div>
		<div id="ad-pc-right">
			【ここにPC用広告コード(右)を挿入】
		</div>
	</div>
<?php } ?>

2行目には、アドセンス非表示のときに代わりに表示させる広告コードを挿入してください。

最初と最後の見出し(h2)前

【STINGER PLUS+】最初と最後の見出し(h2)前にアドセンスを設置してみた

こちらの記事では、見出し(h2)の前にアドセンスを表示させるカスタマイズを紹介しています。

アドセンス非表示を可能にするには、カスタマイズ記事内の“テーマのための関数(functions.php)に追記するコード”を変更してください。

//最初の見出し(h2)前にアドセンスを表示
function add_ads_before_h2($the_content) {
$ad1 = <<< EOF
  <p class="ad-label">スポンサーリンク</p>
  <div class="ad-h2">
    【ここにスマホで最初の見出し前に表示させる広告コードを挿入】
  </div>
EOF;
$ad2 = <<< EOF
  <p class="ad-label">スポンサーリンク</p>
  <div class="ad-h2">
    【ここにスマホで最後の見出し前に表示させる広告コードを挿入】
  </div>
EOF;
$ad3 = <<< EOF
  <p class="ad-label">スポンサーリンク</p>
  <div class="ad-h2">
    【ここにPCで最初の見出し前に表示させる広告コードを挿入】
  </div>
EOF;
  if ( is_single() ) {
    $h2 = '/^<h2.*?>.+?<\/h2>$/im';
    if ( preg_match_all( $h2, $the_content, $h2s )) {
      if ( $h2s[0] ) {
        if (st_is_mobile()){ //スマホの場合
          if ( $h2s[0][0] ) {
            $the_content = str_replace($h2s[0][0], $ad1.$h2s[0][0], $the_content);
          }
          if ( $h2s[0][1] ) {
            $the_content = str_replace($h2s[0][count($h2s[0]) - 1], $ad2.$h2s[0][count($h2s[0]) - 1], $the_content);
          }
        } else { //PCの場合
          if ( $h2s[0][0] ) {
            $the_content = str_replace($h2s[0][0], $ad3.$h2s[0][0], $the_content);
          }
        }
      }
    }
  }
  return $the_content;
}
add_filter('the_content','add_ads_before_h2');

上記のコードを、下記のコードと差し替えてください。
//最初の見出し(h2)前にアドセンスを表示
function add_ads_before_h2($the_content) {
$ad = <<< EOF
    【ここにアドセンスの代わりの広告コードを挿入】
EOF;
$ad1 = <<< EOF
  <p class="ad-label">スポンサーリンク</p>
  <div class="ad-h2">
    【ここにスマホで最初の見出し前に表示させる広告コードを挿入】
  </div>
EOF;
$ad2 = <<< EOF
  <p class="ad-label">スポンサーリンク</p>
  <div class="ad-h2">
    【ここにスマホで最後の見出し前に表示させる広告コードを挿入】
  </div>
EOF;
$ad3 = <<< EOF
  <p class="ad-label">スポンサーリンク</p>
  <div class="ad-h2">
    【ここにPCで最初の見出し前に表示させる広告コードを挿入】
  </div>
EOF;
  if ( is_single() ) {
    $h2 = '/^<h2.*?>.+?<\/h2>$/im';
    if ( preg_match_all( $h2, $the_content, $h2s )) {
      if ( $h2s[0] ) {
        if(get_field('noads')) { //アドセンス非表示の場合
          if (st_is_mobile()) { //スマホの場合
            if ( $h2s[0][0] ) {
              $the_content = str_replace($h2s[0][0], $ad.$h2s[0][0], $the_content);
            }
            if ( $h2s[0][1] ) {
              $the_content = str_replace($h2s[0][count($h2s[0]) - 1], $ad.$h2s[0][count($h2s[0]) - 1], $the_content);
            }
          } else { //PCの場合
            if ( $h2s[0][0] ) {
              $the_content = str_replace($h2s[0][0], $ad.$h2s[0][0], $the_content);
            }
          }
        } elseif (st_is_mobile()) { //スマホの場合
          if ( $h2s[0][0] ) {
            $the_content = str_replace($h2s[0][0], $ad1.$h2s[0][0], $the_content);
          }
          if ( $h2s[0][1] ) {
            $the_content = str_replace($h2s[0][count($h2s[0]) - 1], $ad2.$h2s[0][count($h2s[0]) - 1], $the_content);
          }
        } else { //PCの場合
          if ( $h2s[0][0] ) {
            $the_content = str_replace($h2s[0][0], $ad3.$h2s[0][0], $the_content);
          }
        }
      }
    }
  }
  return $the_content;
}
add_filter('the_content','add_ads_before_h2');

4行目には、アドセンス非表示のときに代わりに表示させる広告コードを挿入してください。

サイドバー

【STINGER PLUS+】サイドバーにアドセンスのラージスカイスクレイパーを設置してみた

こちらの記事では、サイドバーにアドセンスを表示させるカスタマイズを紹介しています。

アドセンス非表示を可能にするには、カスタマイズ記事内の“サイドバー(sidebar.php)に追記するコード”を変更してください。

<?php if(st_is_mobile()) { //スマホの場合 ?>
	<p class="ad-label">スポンサーリンク</p>
	<div class="ad-box">
		【ここにスマホ用広告コードを挿入】
	</div>
<?php } else { //PCの場合 ?>
	【ここにPC用広告コードを挿入】
<?php } ?>

上記のコードを、下記のコードと差し替えてください。
<?php if(get_field('noads')) { //アドセンス非表示の場合 ?>
	【ここにアドセンスの代わりの広告コードを挿入】
<?php } elseif(st_is_mobile()) { //スマホの場合 ?>
	<p class="ad-label">スポンサーリンク</p>
	<div class="ad-box">
		【ここにスマホ用広告コードを挿入】
<?php } else { //PCの場合 ?>
	【ここにPC用広告コードを挿入】
<?php } ?>

2行目には、アドセンス非表示のときに代わりに表示させる広告コードを挿入してください。

まとめ

アドセンスを掲載していると、規約を気にして書きたいことが書けないこともありますよね。
明らかにアウトな内容もあれば、ちょっとグレーゾーンだなと感じるときも。

そんなときは、記事ごとにアドセンスを非表示にできるようにしておくと便利ですよ。

ぜひカスタマイズを取り入れてみてください。

 

念のため、アドセンスの規約を一度確認しておきましょうね。

禁止コンテンツ - AdSense ヘルプ

-WordPress

© 2020 Life Jam Powered by AFFINGER5