人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

wordpress3.5のテンプレート修正、追加に関しての質問です。
テンプレートによって違うサイドバーを表示させる事を想定しています。
例えるとカテゴリーページはsidebar.php、固定ページはsidebar1.php、アーカイブページはsidebar2.phoみたいなイメージです。sidebar.phpは管理画面の「外観」→「ウィジット」から設定できますが複数sidebar.phpを作成する場合、どのような手順で作成するのでしょうか。その作業方法を教えてください。

●質問者: mkusume
●カテゴリ:インターネット ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● rouge_2008
●180ポイント ベストアンサー

・サイドバー(※ウィジェットエリア)を作成します。
Twenty Elevenの「functions.php」の384行目以降に次の記述がありますので、関数「twentyeleven_widgets_init()」内に続けて記述してみてください。(※オリジナルテーマの場合は、参考にして作成してください。)

/**
 * Register our sidebars and widgetized areas. Also register the default Epherma widget.
 *
 * @since Twenty Eleven 1.0
 */
function twentyeleven_widgets_init() {

register_widget( 'Twenty_Eleven_Ephemera_Widget' );

register_sidebar( array(
'name' => __( 'Main Sidebar', 'twentyeleven' ),
'id' => 'sidebar-1',
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
'after_widget' => "</aside>",
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
) );

/* ? 略 ? */

register_sidebar( array(
'name' => __( 'Footer Area Three', 'twentyeleven' ),
'id' => 'sidebar-5',
'description' => __( 'An optional widget area for your site footer', 'twentyeleven' ),
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
'after_widget' => "</aside>",
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
) );

// カテゴリーページ用サイドバーの追加
register_sidebar( array(
'name' => 'Category Main Sidebar', // 適当な名前
'id' => 'sidebar-6', // 固有のID
'description' => 'An optional widget area for your category pages sidebar',
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
'after_widget' => "</aside>",
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
) );

// 固定ページ用サイドバーの追加
register_sidebar( array(
'name' => 'Pages Main Sidebar', // 適当な名前
'id' => 'sidebar-7', // 固有のID
'description' => 'An optional widget area for your pages sidebar',
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
'after_widget' => "</aside>",
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
) );

// アーカイブ用サイドバーの追加
register_sidebar( array(
'name' => 'Archives Main Sidebar', // 適当な名前
'id' => 'sidebar-8', // 固有のID
'description' => 'An optional widget area for your archives sidebar',
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
'after_widget' => "</aside>",
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
) );
}
add_action( 'widgets_init', 'twentyeleven_widgets_init' );


・関数リファレンス/register sidebar
http://wpdocs.sourceforge.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


・各種ページ用のテンプレートを編集して、任意のサイドバーを表示するようにします。

カテゴリーページ「category.php」のサイドバーを読み込む位置に次の記述を追加します。(※「sidebar.php」という事ですから、引数を指定する必要はありません。)

get_sidebar();

・「sidebar.php」に次の記述を追加して、登録済みのサイドバーを表示するようにします。

<!-- サイドバーを囲む要素のIDは任意で指定してください。この例ではTwenty Elevenから引用しています。 -->
<div id="secondary" class="widget-area">
<?php if ( ! dynamic_sidebar( 'sidebar-6' ) ) : ?>

<!-- ここに記述する内容は、サイドバーが利用されていない場合に表示されます。 -->

<?php endif; // end sidebar widget area ?>
</div><!-- #secondary .widget-area -->

※「dynamic_sidebar()」には、表示するサイドバー(※「register_sidebar()」で登録済み)の名前または固有のIDを指定します。(ここでは、カテゴリーページ用のサイドバーのIDの「sidebar-6」としてあります。)


次に固定ページ「page.php」のサイドバーを読み込む位置に次の記述を追加します。(※「sidebar1.php」という事ですが、WordPressの仕様で「sidebar-引数に指定した名前.php」となっていますから、ファイル名は「sidebar-1.php」になります。引数には「1」を指定します。)

get_sidebar( '1' );

※上記と同じようにアーカイブページ「archive.php」にも追加します。
※各種ページで読み込むテンプレートファイルは、次のページも参照しておくといいです。
http://wpdocs.sourceforge.jp/テンプレート階層

※サイドバーのテンプレートファイル「sidebar-1.php」「sidebar-2.php」についても、「sidebar.php」と同じように作成します。


※次のように「is_active_sidebar('サイドバーの名前または固有のID')」を使用すると、指定したサイドバーが利用されているかどうか判定して、利用している時のみ表示する事ができますので、利用されていない時に任意のサイドバーを囲む要素ごと非表示にできます。(※Twenty Elevenの「sidebar-footer.php」参照)

<?php if ( is_active_sidebar( 'sidebar-3' ) ) : ?>
<div id="first" class="widget-area" role="complementary">
<?php dynamic_sidebar( 'sidebar-3' ); ?>
</div><!-- #first .widget-area -->
<?php endif; ?>



・関数リファレンス/get_sidebar
http://wpdocs.sourceforge.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/get_sidebar

説明
現在のテーマディレクトリの sidebar.php テンプレートファイルを読み込みます。名前 ($name) を指定すると、指定したサイドバー sidebar-{name}.php を読み込みます。
sidebar.php ファイルがテーマに含まれていない場合は、デフォルトテーマの wp-includes/theme-compat/sidebar.php を読み込みます。

使い方

<?php get_sidebar( $name ); ?>

パラメータ
$name
(文字列) (オプション) sidebar-name.php を読み込む
初期値: なし


・関数リファレンス/dynamic sidebar
http://wpdocs.sourceforge.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/dynamic_sidebar


mkusumeさんのコメント
いつも詳細な解説ありがとうございます。確認してみます。

mkusumeさんのコメント
確認しました。実現しました。本当にありがとうございます。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ