🌸ある程度WordPressに慣れたクライアントで、サイドバーの項目を編集したいと要望があった場合などはこの手順で作ろう!

※基本的には8-2. のようにテンプレートに直書きで固定することが多い。詳しくは8-2. を参照のこと

【目次】

ウィジェットを有効化し、サイドバーを追加する

  1. ウィジェットを有効化にするためのコードを「functions.php」に記述する

    /**
    * ウィジェットの登録
    *
    * @codex <http://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/register_sidebar>
    */
    function my_widget_init() {
    register_sidebar(
    array(
    'name' => 'サイドバー', //表示するエリア名
    'id' => 'sidebar', //id
    'before_widget' => '<div id="%1$s" class="widget %2$s">',
    'after_widget' => '</div>',
    'before_title' => '<div class="widget-title">',
    'after_title' => '</div>',
    )
    );
    }
    add_action( 'widgets_init', 'my_widget_init' );
    
  2. 管理画面をリロードし、「外観」に「ウィジェット」が追加されているか確認、1.の「name」に記述した名前の欄が右側にできているかも確認する (今回でいうと「サイドバー」が登録されていればOK)

🌸register_sidebar() は名前だけ見るとサイドバーしか登録できなさそうに見えるが、この関数で記事上・記事下・フッターなど自由にウィジェットエリアを登録できる。

ウィジェットエリア「サイドバー」をsidebar.phpに表示させる

  1. 「sidebar.php」にウィジェットエリア「サイドバー」を表示させるためのコードを記述する

    <!-- secondary -->
    <aside id="secondary">
    <?php if ( is_active_sidebar( 'sidebar' ) ) : ?>
    <?php dynamic_sidebar( 'sidebar' ); ?>
    <?php endif; ?>
    </aside><!-- secondary -->
    
    //置き換え前
    <!-- secondary -->
    <aside id="secondary">
    
    <!-- widget -->
    <div class="widget widget_text widget_custom_html">
    <div class="widget-title">プロフィール</div>
    ・・・
    </div><!-- /widget -->
    <!-- widget -->
    <div class="widget widget_search">
    <div class="widget-title">検索</div>
    ・・・
    </div><!-- /widget -->
    ・・・
    
    </aside><!-- secondary -->
    
  2. これで「sidebar.php」に「サイドバー」で設定した項目を表示させる準備が整った

🌸is_active_sidebar()dynamic_sidebar()も名前はサイドバー専用っぽい関数だが、ウィジェットエリアを表示させる時には常にこの関数を使う