サイドバーをウィジェットで管理するには、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>