Dynamically Register Sidebars For Each Top Level Page

try this code for creating unique sidebar for each parent page

you can use $page->post_name(page slug) or $page->ID(page id) as
sidebar id

if ( function_exists('register_sidebar') ){
    /*extract all parent pages */
    $topLevel = get_pages(array(
        'sort_column' => 'post_date',
        'hierarchical' => 0,
        'parent' => 0
    ));

    foreach($topLevel as $page){
        /* register sidebar for each parent page */
        register_sidebar(array(  
          'name' => $page->post_title,  
          'id'   => 'sidebar-'.$page->post_name, 
          'description'   => 'This widget display on page "'.$page->post_title.'"',  
          'before_widget' => '<div id="'.$sidebarID.'" class="widget">',
          'after_widget'  => '</div>',  
          'before_title'  => '<h2>',  
          'after_title'   => '</h2>'  
        ));
    }
}

Leave a Comment