Skip to content

Instantly share code, notes, and snippets.

@franhaselden
Created August 6, 2015 11:08
Show Gist options
  • Save franhaselden/1540ef327b7eeb87241b to your computer and use it in GitHub Desktop.
Save franhaselden/1540ef327b7eeb87241b to your computer and use it in GitHub Desktop.
Dynamically create sidebars for all pages/posts that match the criteria given. In the example below they must match 'pages', 'published' and be of template 'template-generic-sidebar'.
/* ========================================================================================================================
Create sidebars for pages
======================================================================================================================== */
$get_pages_args = array(
'post_type' => 'page',
'post_status' => 'publish'
);
$all_pages = get_pages($get_pages_args);
$counter = 0;
$sidebars_required = array();
foreach($all_pages as $page){
$page_id = $page->ID;
$page_template = get_page_template_slug($page_id);
if (strpos($page_template,'template-generic-sidebar') !== false) {
$counter++;
$page_details = array(
"ID" => $page_id,
"title" => $page->post_title,
"slug" => $page->post_name,
);
array_push($sidebars_required,$page_details);
}
}
for ($i = 1; $i <= $counter; $i++) {
$array_counter = $i-1;
$args = array(
'name' => __($sidebars_required[$array_counter]['title'].' sidebar'),
'id' => 'sidebar-'.$sidebars_required[$array_counter]['slug'].$sidebars_required[$array_counter]['id'],
'before_widget' => '<li id="%1$s" class="widget %2$s">',
'after_widget' => '</li>',
'before_title' => '<h2 class="widgettitle">',
'after_title' => '</h2>'
);
register_sidebar($args);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment