TODO: To change the header's content go to Dr.Explain menu Options : Project Settings : HTML (CHM) Export : Setup HTML Template and Layout
×
Menu
Index

Sidebars Widgets

Đăng ký và gọi sidebar:
- Đăng ký sidebar.
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>',
     ) );
   register_sidebar(array(
        'name'  =&gt; __('Logged In Sidebar', 'wpse64492'),
        'id'    =&gt; 'logged-in'
    ));
}
add_action( 'widgets_init', 'twentytwelve_widgets_init' );
 
Sau khi đăng ký sidebar mới bạn truy cập Giao diện > Widgets để quản lý widgets cho các sidebars.
 
- Gọi sidebar:
+ Chúng ta có template sidebar.php ,là template hiển thị sidebar mặc định cho website bạn sử dụng hàm get_sidebar() để include file này vào page template chính.
<?php get_sidebar(); ?>
 
+ Chèn sidebar khác vào website bạn sử dụng hàm dynamic_sidebar()
//example to display sidebar with id= sidebar-1
dynamic_sidebar('sidebar-1');
 
Tạo sidebar động (Điều khiển sidebar trong wordpress):
WordPress cung cấp hook sidebars_widgets để làm điều này thật dễ dàng. Hãy xem ví dụ sau đây:
add_filter('sidebars_widgets', 'wpse64492_switch');
function wpse64492_switch($widgets)
{
    if(is_admin())
        return $widgets;
 
    $key = 'sidebar-1'; // the sidebar you want to change!
 
    if(isset($widgets[$key]) and is_user_logged_in() and isset($widgets['logged-in']))
        $widgets[$key] = $widgets['logged-in'];
 
    return $widgets;
}
 
Biến $widgets chứa các sidebars được đăng ký bởi hàm register_sidebar đặt trong /functions.php, bạn có thể thay thế sidebar khác với điều kiện theo ý bạn.
Hoặc cách đơn giản hơn, là custom hàm hàm dynamic_sidebar theo ngụ ý sử dụng.
function mytheme_sidebar($name)
{
     $name = apply_filters('mytheme_sidebar', $name);echo $name;
     dynamic_sidebar($name);
}
add_filter('mytheme_sidebar', 'mytheme_custom_sidebar');
function mytheme_custom_sidebar($name)
{
    return is_user_logged_in() ?  $name:'sidebar2';
}
 
Như vậy thay vì sử dụng dynamic_sidebar('sidebar-name'); thì sử dụng mytheme_sidebar('sidebar-name');
 
Made with help of Dr.Explain

Unregistered version