
Этот фрагмент немного длиннее тех, что я обычно публикую, но, тем не менее, он очень полезен. Этот код позволит вам легко создавать новые боковые панели, просто добавляя их имя к массиву. Вы также сможете сопоставить динамическим сайдбарам определенные страницы, выбрав из настраиваемого метабокса со списком боковых панелей.
Вставьте первую часть кода в файл functions.php. Это, во-первых, создаст новый метабокс в редакторе страниц, что позволит вам прикреплять к статье один из динамически создаваемых сайдбаров. А во-вторых, вы заметите массив имен, например: Sidebar 01, Sidebar 02, и т.д. Вы сможете поменять эти названия на другие или добавить к массиву новые. Замените весь код в файле sidebar.php в вашей теме WordPress вторым фрагментом. Готово!
PHP — functions.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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
$dynamic_widget_areas = array( /* rename or create new dynamic sidebars */ "Sidebar 01", "Sidebar 02", "Sidebar 03", "Sidebar 04", "Sidebar 05", "Sidebar 06", "Sidebar 07", "Search Template", ); if ( function_exists('register_sidebar') ) { foreach ($dynamic_widget_areas as $widget_area_name) { register_sidebar(array( 'name'=> $widget_area_name, 'before_widget' => '<div id="%1$s" class="widget %2$s left half">', 'after_widget' => '</div>', 'before_title' => '<h3 class="widgettitle">', 'after_title' => '</h3>', )); } } add_action("admin_init", "sidebar_init"); add_action('save_post', 'save_sidebar_link'); function sidebar_init(){ add_meta_box("sidebar_meta", "Sidebar Selection", "sidebar_link", "page", "side", "default"); } function sidebar_link(){ global $post, $dynamic_widget_areas; $custom = get_post_custom($post->ID); $link = $custom["_sidebar"][0]; ?> <div class="link_header"> <? echo '<select name="link" class="sidebar-selection">'; echo '<option>Select Sidebar</option>'; echo '<option>-----------------------</option>'; foreach ( $dynamic_widget_areas as $list ){ if($link == $list){ echo '<option value="'.$list.'" selected="true">'.$list.'</option>'; }else{ echo '<option value="'.$list.'">'.$list.'</option>'; } } echo '</select><br />'; ?> </div> <p>Select sidebar to use on this page.</p> <?php } function save_sidebar_link(){ global $post; if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {return $post->ID;} update_post_meta($post->ID, "_sidebar", $_POST["link"]); } add_action('admin_head', 'sidebar_css'); function sidebar_css() { echo' <style type="text/css"> .sidebar-selection{width:100%;} </style> '; } |
PHP — sidebar.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<!-- begin sidebar --> <div id="sidebar"> <? global $post; $custom = get_post_custom($post->ID); $link = $custom["_sidebar"][0]; if($link != ''){ echo '<ul id="widgets">'; if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar($link) ) : endif; echo '</ul>'; } ?> </div> <!-- end sidebar --> |