WordPress のテーマ ファイルで、sidebar-left-slugname.php や sidebar-right-slugname.php とかを使いたかったのでやってみたメモ…無駄かな…?
header.php などで、変数 global $Slug を定義してスラッグ名を入れておく
1 2 3 4 5 6 7 8 |
<?php global $Slug; if (is_category()) { $cat = get_category(get_query_var('cat'), false); $Slug = $cat->slug; } else { $Slug = $post->post_name; } |
functions.php で、sidebar-left-slugname.php や sidebar-right-slugname.php を読み込む&常時使用するサイドバーを定義
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
// Sidebar (function(){ foreach (glob(__DIR__."/sidebar-{left,right}-*.php", GLOB_BRACE) as $filename) { require_once($filename); } })(); register_sidebar(array( 'name' => __('未使用 置き場'), 'id' => 'individual-sidebar', 'description' => '', 'before_widget' => '<div class="sidebar widget">', 'after_widget' => '</div>', //'before_widget' => '<li>', //'after_widget' => '</li>', 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>' )); register_sidebar(array( 'name' => __('Left Sidebar'), 'id' => 'sidebar-left', 'description' => '', 'before_widget' => '<div class="sidebar widget">', 'after_widget' => '</div>', //'before_widget' => '<li>', //'after_widget' => '</li>', 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>' )); register_sidebar(array( 'name' => __('Right Sidebar'), 'id' => 'sidebar-right', 'description' => '', 'before_widget' => '<div class="sidebar widget"><div class="widget-inner">', 'after_widget' => '</div></div>', //'before_widget' => '<li>', //'after_widget' => '</li>', 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>' )); |
テーマ内のサイドバーを表示している部分、dynamic_sidebar が使われているところを下記のような感じにテーマに合わせて変更する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php global $Slug; echo '<div class="sidebar sidebar-left">'; if (!dynamic_sidebar('sidebar-left-'.$Slug)) { dynamic_sidebar('sidebar-left'); } echo '</div><!-- .sidebar .sidebar-left -->'; echo '<div class="sidebar sidebar-right">'; if (!dynamic_sidebar('sidebar-right-'.$Slug)) { dynamic_sidebar('sidebar-right'); } echo '</div><!-- .sidebar .sidebar-right -->'; ?> |
スラッグ名で使用するサイドバーファイルをこんな感じに作成する sidebar-left-slugname.php
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php register_sidebar(array( 'name' => __('Left Sidebar Slug Name'), 'id' => 'sidebar-left-slugname', 'description' => '', 'before_widget' => '<div class="sidebar widget">', 'after_widget' => '</div>', //'before_widget' => '<li>', //'after_widget' => '</li>', 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>' )); |