我有一个小网站,希望每个页面都有一个不同的侧边栏,其中包含文本块、图像块和链接块等。我想做的是为每个顶级页面注册一个侧边栏:
if ( function_exists(\'register_sidebar\') ){
$topLevel = get_pages(array(
\'sort_column\' => \'post_date\',
\'hierarchical\' => 0,
\'parent\' => 0,
\'post_type\' => \'page\',
\'post_status\' => \'publish\'
));
foreach($topLevel as $page)
{
//make alphaunermic
$sidebarID = preg_replace("/[^a-z0-9_\\s-]/", "", strtolower($page->post_title));
//Clean multiple dashes or whitespaces
$sidebarID = preg_replace("/[\\s-]+/", " ", strtolower($page->post_title));
//Convert whitespaces and underscore to dash
$sidebarID = preg_replace("/[\\s_]/", "-", strtolower($page->post_title));
register_sidebar(array(
\'name\' => $page->post_title,
\'id\' => $sidebarID,
\'description\' => \'\',
\'before_widget\' => \'<div id="\'.$sidebarID.\'" class="widget">\'
\'after_widget\' => \'</div>\',
\'before_title\' => \'<h2>\',
\'after_title\' => \'</h2>\'
));
}
}
1)这可能吗?
2) 有没有更好的办法?
3) 我有一些错误。。。
最合适的回答,由SO网友:Ravinder Kumar 整理而成
请尝试以下代码为每个父页面创建唯一的侧栏
您可以使用$page->post_name
(页码段塞)或$page->ID
(页面id)作为侧栏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>\'
));
}
}