特定のページでAdSense広告等を非表示にしたい時があります。
例えば、知り合い同士に限定したパスワードで保護されたプライベートページで、AdSense広告がクリックされるとポリシー違反になる恐れがあるので、このページのAdSense広告(手動及び自動広告)を非表示にしたい場合がそれに当たります。
こんな時に、特定ページの要素部分を非表示に出来る囲み型ショートコードを使えば、手動のAdSense広告コードを囲むことで手動広告を非表示に出来ます。 又自動広告に対しては、AdSenseの管理画面から特定ページのURLを指定すれば自動広告を除外することができます。
今回は、Post Snippets Plugin(以下PSPに略します)を使った上記の囲み型ショートコードを作成する方法を中心に、特定ページのAdSense広告を非表示にする方法の紹介です。
Post Snippets Pluginの基本的使い方は、以下の記事を参照してください。
ショートコードについて
WordPressのショートコードは、自己完結型と囲み型の2つがあります。
自己完結型ショートコードは、例えば以前紹介した「WordPressに『日時』表示。PHPとJavaの使い分け」にある、【date_stamp_php flg="0"】
をページの中に配置して、日時表示を単独で処理できるものです。 これは、PSPで作成する一般的な自己完結型ショートコードです。
一方の、囲み型ショートコードは始点[shortcode]
と終点[/shortcode]
でコンテンツを囲みます。 始点の[shortcode]
で分岐などの処理を行い、囲まれているコンテンツに対して終点[/shortcode]
で処理を完了させるものです。
PSPによる囲み型 ショートコードの作成
ポイント
PSPで囲み型ショートコードを作るには、{content} で表記指定します。 イメージ的には、 { の前方が始点[shortcode]
に対応し、 } の後方が終点[/shortcode]
に対応します。
Post Snippetsの設定画面
①ショートコードの名前を記入:ここでは、AD_block としました。
② 特定ページに対して、広告を非表示にするPHPコードを記入します。
2022/12/31: PHPコードを一部見直し訂正しました
1 2 3 4 5 6 7 8 9 |
$inputID=[611,9921]; // 広告を非表示にしたいページIDをカンマ区切りで指定 $postid = get_the_ID(); // 現在表示されているページIDを取得 if (in_array($postid , $inputID ,true )){ // id比較 一致なら何もしないで、囲み内容(AdSense code)がパスされる }else { echo '{content}' ; // id比較 不一致なら 囲み内容(AdSense code)が表示される } |
現在表示しているページと指定ページIDと一致しているか調べる方法として投稿ページに対してはis_single(指定ページID) 関数があります。 固定ページの場合は is_page(指定ページID) 関数を使います。
今回は固定、投稿ページの両方で使える get_the_ID(); 関数を使いました。
PSP設定画面に戻って
③ Variablesは未記入です。 ④ のShortcodeと ⑤ のPHPは夫々レ点を入れます。
⑥ Descriptionは、適当にわかり易いショートコードの説明文を記入します。
以上の設定が終わったらSave ボタンを押して保存すれば、「特定ページのAdSense広告を非表示する囲みショートコード」が完成します。
完成した囲みショートコードの使い方
手動のAdSense広告コードは、通常 ウィジェット に記載されていると思います。 AdSense広告コードの設置されている場所に移動して、以下の様にPSPで作成した【AD_block】ショートコードをサンドイッチすれば、指定した特定ページにAdSense広告が表示されなくなる筈です。( 【】は半角の大括弧 [ ] にしてください)
shortcode [AD_block] AdSense広告コード [/AD_block]
以上によって、ページIDで指定した特定ページに対して、手動広告を非表示することができます。
特定ページに対して自動広告を除外させる方法
- アドセンスの管理画面を開きます。
- 広告 > サイト名 > 編集 に入ります。 除外ページ 管理 をクリックします。
- +除外設定 を追加をクリックします。
- 除外するページのURLを記入して、 追加 ボタンを押します。 戻って サイトに適用 ボタンを押します。
以上の操作設定で、特定ページの自動広告を除外できます。
指定した特定ページの広告が非表示になっているかの最終確認
更に、「404頁」 や「プレビュー頁」で AdSense を表示しない様にPHPコードを追加しました。(2021/12/14追記)
投稿記事の更新時、プレビューで事前確認しますが、アドセンス広告が表示され誤クリックする心配やクローラエラーになる可能性がありますので、プレビュー時にアドセンス広告を非表示にするPHPコードをPost Snipetsに追加しました。
PHP関数説明is_preview() 関数:「プレビュー頁」なら true そうでなければ false を返します。
is_404() 関数:「404頁」なら true そうでなければ false を返します。
変更行(4行)をハイライトさせています。 is_preview() || is_404()
コードを OR で繋げて 「プレビュー頁」や 「404 頁」に対してもアドセンス広告を非表示にしています。 なお、「プレビュー頁」や 「404 頁」の自動広告は非表示にできません。
1 2 3 4 5 6 7 8 9 |
$inputID=[611,9921]; // 広告を非表示にしたいページIDをカンマ区切りで指定 $postid = get_the_ID(); // 現在表示されているページIDを取得 if ( (is_404() || is_preview() ) || in_array($postid , $inputID ,true )){ // プレビュー等や id比較 一致なら何もしないで、囲み内容(AdSense code)がパスされる }else { echo '{content}' ; // プレビュー等や id比較 不一致なら 囲み内容(AdSense code)が表示される } |
注意!
WP Fastest Cache Premium(有料版)をお使いで、ウィジェットに【AD_block】AdSense広告コード【/AD_block】を配置する場合は、「Don't cache this widget」にレ点を入れる必要があります。 レ点を入れないとキャッシュが残り、AdSense広告が正常に表示されない可能性があります。