WordPress にウィジェットのエリアを足して、記事の下など好きな場所に出す:register_sidebar と dynamic_sidebar

WordPress 6.4.3
広告WordPress・PHP を学べる本

Amazonのアソシエイトとして、WordPress functions.phpは適格販売により収入を得ています。

概要説明

WordPress のサイドバーのほかに、記事の下やトップページなど好きな場所にウィジェットを置けるように、エリアを足す functions.php とテンプレートのコード。ウィジェットが空のときに枠を出さない is_active_sidebar の使い方も、作業環境で確かめた結果つきで。

コード:ウィジェットのエリアを足す

サイドバーのほかに、記事の下やトップページなど好きな場所にウィジェットを置けるように、エリア(サイドバー)を足します。

functions.php
/**
 * ウィジェットのエリアを足す(外観 → ウィジェット に出る)
 */
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 にウィジェットのエリアを足して、記事の下など好きな場所に出す:register_sidebar と dynamic_sidebar

旧来のウィジェットの画面にしたいとき

今の WordPress のウィジェットの画面は、ブロックエディターの形です。前の形の画面のほうが使いやすいときは、プラグイン「Classic Widgets」をインストールします。

Classic Widgets – WordPress プラグイン

WordPress の開発チームのプラグインで、有効なサイトは 200 万以上です(2026 年 10 月に確認した)。

テンプレートで呼び出す

テンプレート(single.php など)
<?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> が出た

エリアを用意しておくと、あとで直しやすい

トップページや記事のページにエリアを用意しておけば、あとで中身を変えたいときに、テンプレートを直さずに管理画面のウィジェットで入れかえられます。お知らせやキャンペーンのバナーなど、よく変わるものを置く場所に向いています。

参考(WordPress の公式の説明)