Twenty Twenty 9、アドセンス自動広告

Googleアドセンスの自動広告コードは、一般的には、プラグインを使うっぽいのですが、これだけの為にプラグインを入れるのがイヤだったので、functions.phpに追記する形式にしました。

※コード自体は、「初心者向けの万能テーマ」以外であれば、喧嘩しないので、いろんなテーマで使いまわしています。

functions.phpの場所

外観 → テーマエディタ → 編集するテーマを選択:子テーマを選択 → functions.phpに入って下記をコピペ

Twenty Nineteen、アドセンス

functions.phpを編集する際は画面が真っ白になったり、ログインできなくてサーバーに復旧に行ったりしないといけなくなったりするので、バックアップを取って、慎重に!

※画像は「Twenty Nineteen」の画像を転用していますが、右上で、「Twenty Twenty」の子テーマを選んでください。

※閉まっているコードの後ろに丸ごとくっつけるように書いているので、下のコードを使ってエラーが出るという場合は、最初の「<?php」と最後の「?>」を取り除けばいいカモ。

自動広告(普通のウェブページ)

このコードは「投稿のみ」かつ「ログインしていない時」という条件が入っていますので、コードが入っているか確認する時はログアウトするか、シークレットモードで見てみてください。

<?php function additional_head_script() {
    if ( is_single() && !is_user_logged_in() ): ?>
    <script data-ad-client="ca-pub-XXXXXXXXXXXXXXXX" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<?php endif; }
add_action( 'wp_head', 'additional_head_script' );
?>

“ca-pub-XXXXXXXXXXXXXXXX”の部分をご自分のコードに変更されれば、サイトのすべてのページに入ります。

AMP自動広告

AMP自動広告はheadとbodyの2か所にコードを入れます。

まずはHead用のコードをfunctions.phpに追記します。

<?php function amp_additional_head_script () {
$url = 'https://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if (strpos($url,'amp') !== false): ?>
<script async custom-element="amp-auto-ads"
src="https://cdn.ampproject.org/v0/amp-auto-ads-0.1.js">
</script>
<?php endif;
}
add_action( 'wp_head', 'amp_additional_head_script' ); ?>

つぎにbodyタグの直ぐ下用のコードもfunctions.phpに追記します。

<?php function amp_additional_body_script () {
$url = 'https://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if (strpos($url,'amp') !== false): ?>
<amp-auto-ads type="adsense"
data-ad-client="ca-pub-XXXXXXXXXXXXXXXX">
</amp-auto-ads>
<?php endif;
}
add_action( 'wp_body_open', 'amp_additional_body_script' ); ?>

「AMP」というプラグインを使ってAMP化しています。ネットで紹介されていたフック(amp_post_template_head, amp_post_template_footer)を上手く機能させられませんでした。

AMPネイティブじゃなくて、トランジッションを選んだので、URLに「AMP」という文言が含まれていたらコードを挿入するというロジックにしました。

あと、AMPページは自分でプレビューとかしないので、「if ( is_single() && !is_user_logged_in() ):」(投稿ページのみかつログインしていない時)の条件を入れていませんw

最後に

プラグインがおすすめです。残念ながら個人的に使わないですから紹介とかはできません。ごめんなさいまし。

参考資料:Codex「do_action( ‘wp_body_open’ )」、Stackoverflow「Check if URL has certain string with PHP

追記

オリジナル投稿日:2019-12-7

2021年1月31日、別サイトで機能確認後、記事更新。

最後までお読みいただきましてありがとうございました。

作成者: のろのろ

サイト管理者

4件のコメント

  1. はじめまして。
    fuyuzと申します。
    こちらのサイトで知ったTwenty Twenty でサイトを作りました。
    シンプルで理想のテーマです。

    しかしGoogle Adsence広告を設置すると、どうしてもサイト上部に広告が出てしまいます。
    プラグインを使ってafter post としても上部にしか表示されません。
    のろのろさん のように投稿記事の後に広告を表示する方法はありますか?
    ご教授お願いします。
    (いまは広告は表示してません)

    1. こんにちは。
      Twenty Twenty、きれいなテーマですよね。うんうん。

      このサイトのGoogle Adsenseの広告は、アドセンス側の管理画面で、自動広告をオン、「ページ内広告」以外をオフ、広告の読み込みはバーの8分目ぐらいの設定になっていました。それ以外は何も触っていないです。

      私のサイトでは、アドセンスの管理画面でプレビューしてみても、画面上部に広告候補として出てくるページがなくて、よくわかりませんでした。
      https://support.google.com/adsense/thread/19956016?hl=ja

      他のヘルプセンターの記事を見てみても、「自動広告をオフにして、マニュアルで広告ユニットを作る」みたいな回答しか見つからなくて、もやっとしますね。

      お力になれず申し訳ないです。m(__)m

  2. のろのろさん、丁寧にありがとうございました。
    とうぶんはアソシエイトで頑張ってみます。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です