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

IT狐 650 ビュー | 2018/11/17

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

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

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

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

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

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

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

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

まず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で特定の記事やカテゴリでGoogle AdSenseを非表示にする方法

さきほどと同じく、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を入れるということをしているので、その中で上のコードを組み込む必要がありました。

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

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を非表示にする方法でした。

 

記事:itfox.jp