WordPressで特定のタグでGoogleアドセンスを非表示にする方法

no-adsense ブログ

WordPressでGoogleアドセンスを貼る方法は、プラグインを利用する方法かfunctions.phpにコードを記述する方法が主流です。

僕はWordPressテーマ「スワロー」を使っているので、OPENCAGEのAdSenseの「記事内広告」を設置する方法を参考にコードを追加しています。


今回はif文を使って、特定のタグを設定したときだけGoogleアドセンスを非表示に切り替える仕組みを作っていきます。

タグの追加

広告を非表示にする記事に設定するタグを作成します。
僕はわかりやすいように「No Adsense」にしました。

タグの追加

作成したタグのスラッグを確認しておきましょう。
if文の条件式で記述します。

スラッグ

functions.phpの書き換え

現時点でのコードは12行目のif ( is_single() ) で投稿ページだと判定した時に27行目までを実行します。
ですので、この中で更にタグの有無で条件分岐させましょう。

/*--------------------------------------
 Googleアドセンス
--------------------------------------*/
function add_ad_before_h2_for_3times($the_content) {
//広告(AdSense)タグを記入
$ad = <<< EOF
//////////////////////////
//ここにアドセンスを挿入//
//////////////////////////
EOF;

if ( is_single() ) {//投稿ページ
 $h2 = '/^<h2.*?>.+?<\/h2>$/im';//H2見出しのパターン
 if ( preg_match_all( $h2, $the_content, $h2s )) {//H2見出しが本文中にあるかどうか
 if ( $h2s[0] ) {//チェックは不要と思うけど一応
 if ( $h2s[0][1] ) {//2番目のH2見出し手前に広告を挿入
 $the_content = str_replace($h2s[0][1], $ad.$h2s[0][1], $the_content);
 }
 if ( $h2s[0][2] ) {//3番目のH2見出し手前に広告を挿入
 $the_content = str_replace($h2s[0][2], $ad.$h2s[0][2], $the_content);
 }
 if ( $h2s[0][3] ) {//4番目のH2見出し手前に広告を挿入
 $the_content = str_replace($h2s[0][3], $ad.$h2s[0][3], $the_content);
 }
 }
 }
 }
 return $the_content;
}
add_filter('the_content','add_ad_before_h2_for_3times');

if文を追加して下記のような記述に書き換えます。
/*--------------------------------------
 Googleアドセンス
--------------------------------------*/
function add_ad_before_h2_for_3times($the_content) {
//広告(AdSense)タグを記入
$ad = <<< EOF
//////////////////////////
//ここにアドセンスを挿入//
//////////////////////////
EOF;

if ( is_single() ) {//投稿ページ
	if( has_tag( 'no-adsense' )){}
	else{
		$h2 = '/^<h2.*?>.+?<\/h2>$/im';//H2見出しのパターン
		if ( preg_match_all( $h2, $the_content, $h2s )) {//H2見出しが本文中にあるかどうか
		if ( $h2s[0] ) {//チェックは不要と思うけど一応
		if ( $h2s[0][1] ) {//2番目のH2見出し手前に広告を挿入
		$the_content = str_replace($h2s[0][1], $ad.$h2s[0][1], $the_content);
		}
		if ( $h2s[0][2] ) {//3番目のH2見出し手前に広告を挿入
		$the_content = str_replace($h2s[0][2], $ad.$h2s[0][2], $the_content);
		}
		if ( $h2s[0][3] ) {//4番目のH2見出し手前に広告を挿入
		$the_content = str_replace($h2s[0][3], $ad.$h2s[0][3], $the_content);
		}
		}
		}
		}	
	}   
 return $the_content;
}
add_filter('the_content','add_ad_before_h2_for_3times');

13行目のif( has_tag( ‘no-adsense’ )){}no-adsenseというスラッグのタグを持っているかどうかという条件分岐です。
no-adsenseの部分は先ほど作成したタグのスラッグに置き換えてください。

この条件式がTrueの時は広告を表示したくないので、何も記述せず{}とします。

元からあった広告を表示するためのコードをelse{}の中に記述します。
これでタグを設定していない記事では通常通り広告が表示されます。

あとがき

僕はプログラミングはVBA以外ほとんどわかりません。
phpに関しては完璧に初心者です。

既存のコードを参考になんとなくで書いたので、文法が正しいのかも自信がないです。
僕のブログでは正常に動作しているので問題ないとは思いますが、バックアップを取ったうえで自己責任でお願いします。

変更が反映されない場合はブラウザのキャッシュをクリアしてみてください。
テーマの編集はブラウザのキャッシュが残っていると正常に反省されない場合があります。