Home WordpressWordPress cơ bản Thay đổi hiển thị sidebar trong WordPress

Thay đổi hiển thị sidebar trong WordPress

by admincp

Thay đổi động sidebar tùy theo template

dynamic sidebar wordpress

Trước tiên bạn đăng ký sidebars với action “wigets_init”.

//Register a secondary sidebar with action hook widgets_init.
add_action('widgets_init', 'wpse64492_register');
function wpse64492_register()
{
    register_sidebar(array(
        'name'  => __('Logged In Sidebar', 'wpse64492'),
        'id'    => 'logged-in'
    ));
}

Thông thường bố cục của trang web gồm có 4 phần:
-phần đầu header
-phần thân gồm: có cột trái gọi là sidebar và cột phải là nội dung hoặc cột trái là nội dung và cột phải là sidebar.
-phần cuối footer.
Để tạo sidebar chúng ta có template sidebar.php , sau đó sử dụng hàm get_sidebar() để include phần sidebar vào page template.
Khám phá đoạn code trong sidebar.php trong theme twentyeleven:

<div id="secondary" class="widget-area"></div>

Trong đoạn code sidebar template trên lấy nội dung của sidebar-1 được tạo trong Appearance->widgets. Xuyên suốt các trang có sử dụng sidebar là cố định “sidebar-1” tuy nhiên bạn có thể điều kiện sidebar để thay đổi, tăng tính linh hoạt cho nội dung website. Chúng ta sẽ tạo thêm sidebars và thay đổi bố cục sidebars theo ý muốn. Sử dụng những cách sau đây.

Đ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]) &amp;&amp; is_user_logged_in() &amp;&amp; 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');

Bài viết này dành cho những ai am hiểu về lập trình WordPress, và sẽ khó cho người mới tiếp cận. Tuy nhiên, hiện nay có một vài plugin có thể giúp bạn làm điều này một cách dễ dàng. Xem hướng dẫn chọn Sidebar cho trang với WooSidebars

Hi vọng bài viết này giúp bạn sử dụng được nhiều sidebar trong các page khác nhau, tránh sự nhàm chán và tăng tính linh hoạt cho website.

Nếu bạn thấy bài viết này hữu ích, hãy chia sẻ với bạn bè bằng cách nhấn nút chia sẻ ở bên dưới. Theo dõi chúng tôi trên TwitterFacebook

Liên hệ

Công ty chuyên Thiết kế website uy tín nhất Miền Bắc: http://vinastar.net

Hotline tư vấn: 0989 48 3456

Nguồn: Sưu tầm trên internet

You may also like

Leave a Comment