WordPressでウィジェットエリアを追加する方法【register_sidebarの使い方】

WordPressでウィジェットを活用するには、まずウィジェットエリア(サイドバー)を作成する必要があります。この記事では、register_sidebar()関数を使って独自のウィジェットエリアを追加する方法を解説します。

ウィジェットエリアとは?

ウィジェットエリアとは、WordPressテーマ内でウィジェットを表示できる領域のことです。一般的には以下のような場所に使われます。

  • サイドバー
  • フッター
  • ヘッダー下
  • 記事下

テーマによっては、複数のウィジェットエリアが定義されていることもあります。

register_sidebar()の基本構文

ウィジェットエリアは、register_sidebar()関数を使って定義します。以下が基本的な構文です:

function my_theme_widgets_init() {
    register_sidebar( array(
        'name'          => 'サイドバー',
        'id'            => 'sidebar-1',
        'description'   => 'メインのサイドバーです。',
        'before_widget' => '<div id="%1$s" class="widget %2$s">',
        'after_widget'  => '</div>',
        'before_title'  => '<h3 class="widget-title">',
        'after_title'   => '</h3>',
    ) );
}
add_action( 'widgets_init', 'my_theme_widgets_init' );

functions.phpへの追加例

上記のコードを、使用しているテーマのfunctions.phpに追加することで、管理画面の「外観 > ウィジェット」に「サイドバー」が表示されるようになります。

複数のウィジェットエリアを追加するには?

複数のエリアを追加したい場合は、register_sidebar()を複数回呼び出します:

function my_theme_widgets_init() {
    register_sidebar( array(
        'name' => 'サイドバー',
        'id' => 'sidebar-1',
        // その他省略
    ) );

    register_sidebar( array(
        'name' => 'フッター1',
        'id' => 'footer-1',
        // その他省略
    ) );
}
add_action( 'widgets_init', 'my_theme_widgets_init' );

ウィジェットエリアの表示方法

登録したウィジェットエリアをテンプレート内で表示するには、dynamic_sidebar()関数を使います。

<?php if ( is_active_sidebar( 'sidebar-1' ) ) : ?>
    <aside id="secondary" class="widget-area">
        <?php dynamic_sidebar( 'sidebar-1' ); ?>
    </aside>
<?php endif; ?>

このように条件分岐を加えることで、ウィジェットが未設定の場合の余計なマークアップ出力を防げます。

以上で、WordPressテーマにウィジェットエリアを追加する基本的な手順は完了です。独自ウィジェットと組み合わせて、より自由なレイアウト設計を実現しましょう。

関連記事

functions.phpの使い方・基本解説

関連リンク

register_sidebar() – WordPress Developer Resources