WordPressで特定の記事やカテゴリでGoogle AdSenseを非表示にする方法

WordPressで特定の記事やカテゴリだけ、Google AdSenseを非表示にしたい・・そう思ったことはありませんか?

私の場合、クライアントから受ける記事の場合、記事内の広告を非表示にしてほしいと言われたことがありました。その際に行った実装について説明します。

作業には必ず、バックアップを取って行って下さいね。

特定の記事で非表示にする

特定の記事だけブロックする方法です。

WordPressの投稿画面で非表示にしたい投稿のIDを調べる

まずWordPressの投稿画面で、広告を非表示にしたい投稿のIDを調べます。

投稿→該当の記事にカーソルをオン。すると、左下にpost=「数字」というのが表示されますよね。これがIDです。これをメモします。

そして、以下のコードを、広告を入れたい部分に挿入します。

コード:1つの場合


<?php if(!is_single('数字')) : ?>
ここにアドセンスのコードを入れる
<?php endif; ?>

コード:投稿が複数ある場合

たぶんほとんどの場合はこちらのコードになるかと思います。

例として、投稿IDが3,9,15の場合


<?php if(!is_single(array(3, 9, 15))) : ?>
ここにアドセンスのコードを入れる
<?php endif; ?>

数を増やしたい場合は、カンマと数字を入れて下さい。

特定のカテゴリで非表示にする

運営報告などのカテゴリとしてまとまっている場合は、こちらのカテゴリごと非表示にしてしまう方が便利です。

カテゴリIDを調べる

さきほどと同じく、WordPressで投稿→カテゴリでカテゴリ一覧を表示させたら、非表示にしたいカテゴリにカーソルをオン。左下にでてくる、tag_ID=「数字」の部分の数字がカテゴリIDです。これをまたメモします。

コードを挿入


<?php if(!in_category('数字')): ?>
ここにアドセンスのコードを入れる
<?php endif; ?>

コード:カテゴリが複数ある場合

これもさきほどと同じく、複数指定したい場合は以下のように書いて下さい。
例として、カテゴリIDが3,9,15の場合


<?php if(!in_category( array( 3,9,15 ) )): ?>
ここにアドセンスのコードを入れる
<?php endif; ?>

これで非表示になります。

これらは以下の記事を参照させていただきました。ありがとうございます。こちらの記事では、特定のタグによる非表示の方法も紹介されています。

ままはっくはどうやってるの?

紹介しておいてなんですが、私の場合は上のコードだけでは適用できません。function.phpにて、記事本文中にGoogle AdSenseを入れるということをしているので、その中で上のコードを組み込む必要がありました。

というわけで私が実際に書いているコードが以下。

※そもそも私がどのようにGoogle AdSenseを入れているのかについては、こちらの記事を参照ください。

ままはっくのGoogle AdSenseの位置を公開。コピペでOK!記事本文中にアドセンスを差し込む方法【WordPress】

こんにちは、まなしばです。このブログもさまざまなブロガーさんに読んでいただいていることもあり、またこのブログ自…

mama-hack.com

function.phpに書いているコード

私はカテゴリごとAdSenseを非表示にする方法を使用しています。カテゴリは複数指定中。

カテゴリはこの例の場合、1と83のIDを非表示指定した場合です。

moreタグ置換しているAdSenseを非表示にする

//more位置へ挿入
add_filter('the_content', 'adMoreReplace');
function adMoreReplace($contentData) {
$adTags = <<< EOD
ここにAdSenseのコード
EOD
;

if((is_single())&&(!in_category(array('1','83')))){
  $contentData = preg_replace('/<p><span id="more-([0-9]+?)"><\/span>(.*?)<\/p>/i', $adTags, $contentData);
  $contentData = str_replace('', "", $contentData);
  $contentData = str_replace('', '', $contentData);
}
return $contentData;
}

2番目のh2タグ、3番目のh2タグの直前のAdSenseを非表示にする

/*****2番目の見出しタグの直前にアドセンスを埋め込むコード********/
add_filter( 'the_content', 'my_insert_ads_into_posts' );
function my_insert_ads_into_posts( $content ) {
    global $my_menu_name;
    if((is_single())&&(!in_category(array('1','83')))){
        $pc_ad_code = 'ここにPC用のAdSenseコード';
		$sp_ad_code = 'ここにスマホ用のAdSenseコード';
		if(is_mobile()) {
			return my_insert_before( $content,2, '<h2' , $sp_ad_code );
		}else {
			return my_insert_before( $content,2, '<h2' , $pc_ad_code );
		}
        return $content;
    }
    else
    {
    return $content;
    }
}

/*****3番目のh2タグの直前にアドセンスを埋め込むコード********/
add_filter( 'the_content', 'my_insert_ads_into_posts2' );
function my_insert_ads_into_posts2( $content) {
    global $my_menu_name;
    if((is_single())&&(!in_category(array('1','83')))){
        $pc_ad_code = 'ここにPC用AdSenseコード';
        $sp_ad_code = 'ここにスマホ用AdSenseコード';
        if(is_mobile()) {
            return my_insert_before( $content,3, '<h2' , $sp_ad_code );
        }else {
            return my_insert_before( $content,3, '<h2' , $pc_ad_code );
        }
        return $content;
    }
    else
    {
    return $content;
    }
}
function my_insert_after( $my_content , $my_ikutume, $my_kugiri, $my_insert ) {
    $kugirare_parts = explode( $my_kugiri, $my_content );
    foreach ($kugirare_parts as $index => $kugirare_part) {
        if ( trim( $kugirare_part )) {
            $kugirare_parts[$index] .= $my_kugiri;
        }
        if ( $my_ikutume == $index+1 ) {
            $kugirare_parts[$index] .= $my_insert;
        }
    }
    return implode( '', $kugirare_parts );
}
function my_insert_before( $my_content , $my_ikutume, $my_kugiri, $my_insert ) {
    $kugirare_parts = explode( $my_kugiri, $my_content );
    foreach ($kugirare_parts as $index => $kugirare_part) {
        if ( trim( $kugirare_part )&& $index!=0) {
            $kugirare_parts[$index] = $my_kugiri.$kugirare_parts[$index];
        }
        if ( $my_ikutume == $index ) {
            $kugirare_parts[$index] = $my_insert.$kugirare_parts[$index];
        }
    }
    return implode( '', $kugirare_parts );
}

ハイライトしている部分が、非表示にするためのコードとなります。

見る人が見ればいびつなコードなのですが、とりあえず動くのでよしとしています。

まとめ

Google AdSenseを非表示にする方法でした。

今回のPHPのコードは、さすがに私ではどこに非表示コードを入れればいいかわからなかったため、カヤックの夫に実装してもらいました。皆さんにシェアできればと思い。よかったら参考にしてください。

関連記事

WordPressの記事本文中にmoreタグを置換してアドセンスを入れ、CSSで整える方法

@まなしばです。 皆さんは記事の途中にどうやって広告を入れていますか? 見出しタグの前に入れる方法、moreタ…

mama-hack.com

ままはっくのGoogle AdSenseの位置を公開。コピペでOK!記事本文中にアドセンスを差し込む方法【WordPress】

こんにちは、まなしばです。このブログもさまざまなブロガーさんに読んでいただいていることもあり、またこのブログ自…

mama-hack.com