TwentyTenとTwenytwelveのウィジェットエリアの違い

先日来、Theme Test Driveを使って裏でテーマ変更を試験しています。
とりあえずTheme Test Driveをインストールしてみて気になったのが、現在のTwentyTenベースのテーマからTwentyTwelveをテストしようとすると、サイドバーのウィジェットが適用されずサイドバーが無い状態になってしまうこと。
TwentyTenベースのテーマから、元のTwentyTenを裏で表示してみると元のウィジェットがそのまま表示されるので、TwentyTenとTwenytwelveのウィジェットエリア呼び出しの違いがあるからだろうと当たりはつけていたのですが、少し時間ができたので改めて検証。

Twenty Tenのfunctions.phpの記述
[php]function twentyten_widgets_init() {
// Area 1, located at the top of the sidebar.
register_sidebar( array(
‘name’ => __( ‘Primary Widget Area’, ‘twentyten’ ),
‘id’ => ‘primary-widget-area’,
‘description’ => __( ‘The primary widget area’, ‘twentyten’ ),
‘before_widget’ => ‘<li id="%1$s" class="widget-container %2$s">’,
‘after_widget’ => ‘</li>’,
‘before_title’ => ‘<h3 class="widget-title">’,
‘after_title’ => ‘</h3>’,
) );[/php]

Twenty Twelveのfunctions.phpの記述
[php]function twentytwelve_widgets_init() {
register_sidebar( array(
‘name’ => __( ‘Main Sidebar’, ‘twentytwelve’ ),
‘id’ => ‘sidebar-1’,
‘description’ => __( ‘Appears on posts and pages except the optional Front Page template, which has its own widgets’, ‘twentytwelve’ ),
‘before_widget’ => ‘<aside id="%1$s" class="widget %2$s">’,
‘after_widget’ => ‘</aside>’,
‘before_title’ => ‘<h3 class="widget-title">’,
‘after_title’ => ‘</h3>’,
) );[/php]

ということでidがprimary-widget-areaからsidebar-1に変更になっているのが、ウィジェットをそのまま引き継げない原因の様子。

今回の場合、元テーマのfunctions.phpのidをsidebar-1に変更して、再度ウィジェットを再設定し、sideber.phpの
[php]if ( ! dynamic_sidebar( ‘primary-widget-area’ ) ) : ?>[/php]

[php]if ( ! dynamic_sidebar( ‘sidebar-1’ ) ) : ?>[/php]
に変更することで、現在のテーマと、裏で表示させているTwenty Twelveのサイドバーが共通になりました。

この変更、どうやらtwentyelevenがHTML5になってからの変更らしいのですが、あまりtwentyelevenは使って無くて気がつきませんでした。

タイトルとURLをコピーしました