Google AdSenseの自動広告をトップページのみ非表示にする【WordPressカスタマイズ】

Google AdSenseの自動広告をトップページのみ非表示にする【WordPressカスタマイズ】

よこのじ(@yokonoji_work)です。

今回はWordPressトップページのアドセンス自動広告を表示しないようにするカスタマイズについてです。

外部サイトでプロフィール代わりに貼っているトップページのURLは玄関となる場所ですよね。サイトの性質にもよりますが、そのトップページに広告は必要でしょうか?アドセンス広告の特に自動広告はページの表示速度に大きく影響していますので、トップページのみ広告を非表示にすることを検討してみてください。

WordPressトップページで非表示にする

アドセンスの自動広告は、header.phpのheadタグ内に記述しているかと思います。その記述部分に次のようなphpコードを追加してください。

<?php if ( !is_front_page() ) : ?>
自動広告のアドセンスコード
<?php endif; ?>

このphpコードが行っているのは「トップページでなければ広告コードをhtmlに挿入する」ということです(詳細な説明は後述)。これにより、トップページでは自動広告を表示せず、その他の記事ページなどでは自動広告を表示させることができます。

広告コードを記述した完成形はこのようになります(0000000000000000の部分は自身の番号です)。

<?php if ( !is_front_page() ) : ?> 
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<script>
  (adsbygoogle = window.adsbygoogle || []).push({
	google_ad_client: "ca-pub-0000000000000000",
	enable_page_level_ads: true
  });
</script>
<?php endif; ?>

本サイトでは自動広告のコードが有効の場合でもトップページへの自動広告の表示はありませんでした。しかし、それでもページの表示速度に影響はあったようで、上記コードを追加するだけでPageSpeed Insightsのスコアが10程度上昇しました。自動広告はユニット広告との併用が可能ですが、そのために広告位置を検知するような処理があり、その処理が重しとなっているように感じます。

あなたのサイトでも、トップページへの自動広告の表示が必要かどうか検討してみてください。簡単なコードを追加するだけですので、PageSpeed Insightsやその他評価サイトで効果を確認してから取り入れるのか判断しても良いと思います。

参考:Webサイトの表示速度を確認できるサービス5選

is_front_page関数とis_home関数の違い

if文で条件に使用した is_front_page() は、フロントページ表示中であればTrue、そうでなければFalseを返す関数です。似た関数に is_home() があります。こちらは、ブログ投稿インデックスページであればTrue、そうでなければFalseを返します。

両者にどのような違いがあるのか整理しておきたいと思います。

「フロントページ」と「ブログ投稿インデックス」の違いを理解するには、次のような表示設定があることを知っておく必要があります。この設定は、いわゆるトップページ(このサイトだとhttps://yokonoji.work/)に表示させる内容の設定です。

89-adsense-auto-最新の投稿を選択

「最新の投稿」の場合は、投稿した記事が新しい順に表示されている「ブログ投稿インデックス」がトップページになります。よって、トップページはフロントページであり、ブログ投稿インデックスということになります。

89-adsense-auto-トップページ

一方、「固定ページ」の場合は、「ホームページ」と「投稿ページ」に固定ページを割り当てることになります。このとき、ホームページに割り当てた固定ページがトップページに表示されます。そして、投稿ページに割り当てた固定ページに上図のような投稿記事の一覧が表示されます(お問い合わせページのような内容を持ったページを割り当てても投稿一覧が表示されるので、空の固定ページを割り当てるのが普通です)。

この場合は、「ホームページ」に割り当てたページがフロントページであり、「投稿ページ」に割り当てたページがブログ投稿インデックスということになります。

さて、ここまでの説明で is_front_page関数とis_home関数 の使い分けに注意が必要なことが予想できるかと思います。

ホームページの表示設定で「最新の投稿」を選択している場合には is_front_page を使用すれば問題はありません。トップページ=フロントページ=ブログ投稿インデックスなので、フロントページでもブログ投稿インデックスでも広告を表示させたくないという希望を満たしてくれるからです。is_homeでも大丈夫ということにもなりますね。

余談ですが、ブログ投稿インデックス(記事一覧)の2ページ目以降もフロントページという扱いのようです。

しかし「固定ページ」の場合には、フロントページとブログ投稿インデックスどちらで広告を表示させたくないのかで使い分ける必要があります。

if文の条件に is_front_page のみを指定した場合には「ホームページ」に設定した固定ページでは自動広告は表示されませんが、「投稿ページ」に割り当てた固定ページ(記事一覧の表示)では自動広告が表示されます。この場合「投稿ページ」はトップページではないので自動広告が表示されても問題ないのであればそれで良いですが、「投稿ページ」でも自動広告を表示させたくない場合は、次のような条件にする必要があります。

<?php if ( !is_front_page() && !is_home() ) : ?>
自動広告のアドセンスコード
<?php endif; ?>

この条件であれば、「ホームページ」「投稿ページ」どちらでも自動広告は表示されません。ご自身のサイトに合わせて、使い分けるようにしてみてください。