サイドバーをウィジェットで管理するには、register_sidebar という関数を使います。
サイドバーを登録する
register_sidebar を使いサイドバーをウィジェットで管理することができます。
この関数はパラメータが複数あり、functions.php の中に記述します。
| 文字列 | 内容 | デフォルト値 |
|---|---|---|
| name | サイドバーの名前 | サイドバー 番号という文字列 |
| id | サイドバーのID | sidebar-番号 という文字列 |
| description | サイドバーの概要 | なし |
| class | 管理画面の 外観 > ウィジェットでサイドバーに割り当てられる CSS のクラス | 空文字列 |
| before_widget | ウィジェットの先頭に出力する文字列 | <li id=”%1$s” class=”widget %2$s”> |
| after_widget | ウィジェットの最後に出力する文字列 | </li>\n |
| before_title | ウィジェットのタイトルの前に出力する文字列 | <h2 class=”widgettitle”> |
| after_title | ウィジェットのタイトルの後に出力する文字列 | </h2>\n |
ウィジェットで管理するサイドバーを複数作るには、サイドバーの名前を指定して、ここを識別するようにします。
例えば sidebarA とsidebarB の2つのサイドバーを登録する場合、functions.php へ以下のように記述します。
register_sidebar( array( 'name' => 'sidebarA' ));
register_sidebar( array( 'name' => 'sidebarB' ));
HTMLを変更してサイドバーを登録
デフォルトの状態では、ウィジェットは以下のようなHTML構造で出力されます。
<li id="ウィジェットのID" class="widget-container widget_○○○">
<h2 class="widgettitle">ウィジェットタイトル</h2>
ウィジェットの内容
</li>
これ以外の関数で出力したい場合、register_sidebar 関数のパラメータの配列で、before_widget after_widget before_title after_titleの要素を指定します。
register_sidebar(array(
'name'=>'ウィジェットエリアの名前',
'id' => 'ウィジェットエリアのID',
'before_widget' => '<div>',
'after_widget' => '</div>',
'before_title' => '<h4>',
'after_title' => '</h4>'
));
複数のウィジェットエリアを作る場合
上記は、ひとつのウィジェットを構成するコードです。
例えば、3つ複数のウィジェットエリアを作る場合、以下のようにコードを3つ設置しましょう。
register_sidebar(array(
'name'=>'ウィジェットエリアの名前1',
'id' => 'ウィジェットエリアのID1',
'before_widget' => '<div>',
'after_widget' => '</div>',
'before_title' => '<h4>',
'after_title' => '</h4>'
));
register_sidebar(array(
'name'=>'ウィジェットエリアの名前2',
'id' => 'ウィジェットエリアのID2',
'before_widget' => '<div>',
'after_widget' => '</div>',
'before_title' => '<h4>',
'after_title' => '</h4>'
));
register_sidebar(array(
'name'=>'ウィジェットエリアの名前3',
'id' => 'ウィジェットエリアのID3',
'before_widget' => '<div>',
'after_widget' => '</div>',
'before_title' => '<h4>',
'after_title' => '</h4>'
));
「ウィジェットエリアの名前」と「ウィジェットエリアのID」は、追加するウィジェットエリアごとに、名称が被らないよう独自でユニークな名称を設定しましょう。
登録したサイドバーを出力
register_sidebar 関数で登録したサイドバーは、dynamic_sidebar という関数で出力します。
サイドバーを1つしか登録していない場合は、パラメータを付けずにdynamic_sidehar 関数を実行し、サイドバーを複数登録した場合は、パラメータとしてサイドバーの名前(register_sidebar関数の name に渡した値を指定します。
たとえば、register_sidebar関数を実行して、SidebarA と SidebarB という名前のサイドバーを登録し、SidebarA のサイドバーを出力するには、以下のように書きます。
<?php dynamic_sidebar( 'sidebarA' ); ?>
個々のウィジェットは通常 li 要素で出力されるので、一般的にはdynamic_sidebar 関数の前後を <ul> と </ul> タグで囲み、ul/li のリストが正しく出力されるように指定します。
<ul>
<?php dynamic_sidebar( 'sidebarA' ); ?>
</ul>


