Google 広告(AdSense)のコードをウィジェットに設定して、テンプレートの好きな位置に表示する方法。広告の差し替え・削除は、テーマのファイルを開かずに管理画面だけで済む。
前提
当たり前だがAdSense の審査に通っていて、広告を作成できる状態であること。
ウィジェットエリアは WordPress に最初からあるものではなく、テーマの functions.php で register_sidebar() を使って用意するもの。
※ テーマがウィジェットエリアを用意していない場合は、「外観」に「ウィジェット」のメニューが表示されない。 ※ 配布テーマを使っている場合は、テーマがウィジェットエリアを用意していることがある。用意されているエリアを使う場合は、「ウィジェットエリアを用意する」は不要。
ウィジェットエリアを用意する
テーマ(子テーマを使っている場合は子テーマ)の functions.php の末尾に追記。
// 広告用のウィジェットエリアを用意する(widgets_init のタイミングで登録)
function mytheme_widgets_init() {
register_sidebar(
array(
'name' => '広告エリア', // 「外観」→「ウィジェット」に表示される名前
'id' => 'ad-area', // ★ テンプレートの dynamic_sidebar() で使う値
'before_widget' => '<div class="widget">',
'after_widget' => '</div>',
'before_title' => '<h2 class="widget-title">',
'after_title' => '</h2>',
)
);
}
add_action( 'widgets_init', 'mytheme_widgets_init' );※ 関数名の mytheme_widgets_init は、テーマの functions.php にすでに同じ名前がある場合は変更する。同じ名前の関数が2つあるとエラーになるため。
※ すでに register_sidebar() でウィジェットエリアを用意している場合は、同じ関数の中に register_sidebar( … ); を追記するだけでOK。
テンプレートに配置
広告を表示したいテンプレート(single.php など)の、表示したい位置に配置。
<?php if ( is_active_sidebar( 'ad-area' ) ) : ?>
<div class="ad">
<?php dynamic_sidebar( 'ad-area' ); ?>
</div>
<?php endif; ?>is_active_sidebar() で囲んでいるのは、ウィジェットエリアが空のときに、囲む div を出力しないため。div に余白を設定している場合も、すき間が残らない。
※ 同じウィジェットエリアを、複数のテンプレートに配置してもよい。たとえば single.php と page.php の両方に配置すると、ウィジェットに設定した1つの広告が記事ページと固定ページの両方に表示される。
広告のコードを取得する

- AdSense の管理画面で「広告」を開く
- 「広告ユニットごと」を開き、「ディスプレイ広告」を選ぶ
- 広告ユニットの名前を入力して「作成」を押す
- 表示されたコードの「コードをコピー」を押す
ウィジェットに設定する

- WordPress の管理画面で「外観」→「ウィジェット」を開く
- 「バナーエリア」を開き、「+」から「カスタム HTML」ブロックを追加する
- 「カスタム HTML」ブロックに、コピーした広告のコードを貼り付ける
- 「更新」を押す
※ 広告を変更するときは、「カスタム HTML」ブロックのコードを入れ替えて「更新」を押す。テンプレートは変更しなくてよい。
既存の設定がある場合
AdSense の自動広告を使っている場合は、ウィジェットの広告と自動広告の両方が表示される。広告の数が多いと感じる場合は、AdSense の管理画面で自動広告の設定を見直す。
※ 広告の表示が反映されるまで、時間がかかる場合がある。作成したばかりの広告ユニットは、すぐには表示されないことがあるため。
NOTICES
- 記事内容は実装させたものがほとんどですが自己責任で参考にしてください。