コード:ウィジェットのエリアを足す
サイドバーのほかに、記事の下やトップページなど好きな場所にウィジェットを置けるように、エリア(サイドバー)を足します。
/**
* ウィジェットのエリアを足す(外観 → ウィジェット に出る)
*/
add_action( 'widgets_init', function () {
register_sidebar( array(
'name' => '記事の下のエリア',
'id' => 'my_after_content',
'description' => '記事の本文の下に出すウィジェット',
'before_widget' => '<section id="%1$s" class="widget %2$s">',
'after_widget' => '</section>',
'before_title' => '<h2 class="widget-title">',
'after_title' => '</h2>',
) );
} );
| 項目 | 役目 |
|---|---|
| name・description | 管理画面の「外観 → ウィジェット」に出る名前と説明 |
| id | テンプレートで呼び出すときの名前(英小文字とアンダーバー) |
| before_widget・after_widget | ウィジェット 1 つずつを囲むタグ(%1$s は id、%2$s は種類の class) |
| before_title・after_title | ウィジェットのタイトルを囲むタグ |
前はこの記事で、関数があるかの確認に別の記事の関数の名前(remove_admin_menu_update)を書いてしまっていました。今は名前のない関数で書いているので、確認は必要ありません。
「外観 → ウィジェット」に足したエリアが出る

旧来のウィジェットの画面にしたいとき
今の WordPress のウィジェットの画面は、ブロックエディターの形です。前の形の画面のほうが使いやすいときは、プラグイン「Classic Widgets」をインストールします。
WordPress の開発チームのプラグインで、有効なサイトは 200 万以上です(2026 年 10 月に確認した)。
テンプレートで呼び出す
<?php if ( is_active_sidebar( 'my_after_content' ) ) : ?> <div class="my-after-content"> <?php dynamic_sidebar( 'my_after_content' ); ?> </div> <?php endif; ?>
is_active_sidebar で、ウィジェットが 1 つでも入っているときだけ枠ごと出します。前の書き方(div で囲んで dynamic_sidebar を呼ぶだけ)だと、ウィジェットが空でも空の div が出てしまいます。
確認した結果
このサイトの作業環境(WordPress 7.1)で、エリアを登録して試しました。
| 見たこと | 結果 |
|---|---|
| エリアの登録 | 「記事の下のエリア」が登録された |
| ウィジェットが空のときの is_active_sidebar | false |
| 空のとき(今の書き方) | 何も出なかった |
| 空のとき(前の書き方) | 空の <div id="widget_free_area"></div> が出た |
エリアを用意しておくと、あとで直しやすい
トップページや記事のページにエリアを用意しておけば、あとで中身を変えたいときに、テンプレートを直さずに管理画面のウィジェットで入れかえられます。お知らせやキャンペーンのバナーなど、よく変わるものを置く場所に向いています。

