WordPressサイトでAdSenseの広告クローラのエラー

AdSenseの承認手続きが完了して、しばらくした後にAdSense管理画面に「広告クローラのエラーが生じており、収益の損失が発生する可能性があります。」と表示されていました。

広告クローラのエラー

「広告クローラのエラーが生じており、収益の損失が発生する可能性があります。」と表示されていました。

右上に「操作」のリンクがありますので、クリックします。すると、「URL の問題: ページが見つからない」と表示されます。「&preview=true」のページがエラーになっています。

元々AdSense申請の時にheadタグ内に貼り付けたコードを、承認手続き後にページ単位の広告で使用していました。
プレビュー画面でも広告が有効になっていたことが原因です。

対策

プレビューに広告を付ける必要はないので、広告が付かないようにします。また、404ページやお問い合わせ、プライバシーポリシーにも広告は不要ですので、この機会に外しました。
対策した翌日にはエラーが消えていました。

対策例

function my_javascript() {
  if ( !is_preview() ) {
    $output = '<script ...></script><script>...</script>'; // AdSenseのコード
    echo $output;
  }
}
add_action( 'wp_head', 'my_javascript' );

プレビュー

プレビューに広告が不要な場合はこちらで判定します。

is_preview()

管理バー

プレビュー時に広告を表示しない方法もありますが、管理バーが表示されている時に非表示にすることも出来ます。ログイン中の広告の誤クリックも防げます。

is_admin_bar_showing()

404

404に広告が不要な場合はこちらで判定します。

is_404()

固定ページ

固定ページもプライバシーポリシーなど広告が不要なページがある場合はこちらで判定します。

is_page( $page )
is_page( 'about' )
is_page( array( 1, 2, 3 ) )

個別投稿ページ

個別投稿ページも広告が不要なページがある場合はこちらで判定します。

is_single( $post )
is_single( 'Title' )
is_single( array( 1, 2, 3 ) )

※ 投稿ID・投稿タイトル・投稿名の区別なし

参考

条件分岐タグ