为什么为每个页面注册一个侧边栏会导致我的侧边栏重置?

时间:2011-12-11 作者:Dustin

我的函数中有以下代码。php

if ( function_exists(\'register_sidebars\') ){

    $pages=get_pages();

    foreach($pages as $page){

        register_sidebar(array(\'name\'=>$page->post_title, \'sort_column\'=>\'ID\',\'sort_order\'=>\'ASC\', \'id\'=>$page->ID));

    }
}
每一页都给我一个侧边栏,效果很好。问题是侧边栏竞赛不断被重置。每次我回到我的widgets页面,侧栏都是空白的。我通常仍然可以在实际网站上看到内容,除非我在另一个侧边栏中更新内容。如果我去掉循环,只使用register\\u侧边栏来注册一个侧边栏,一切似乎都正常。知道为什么吗?

1 个回复
最合适的回答,由SO网友:Chris_O 整理而成

您需要将其包装在一个函数中,然后将其添加到widgets\\u init操作中。此外,register提要栏函数没有sort\\u column或sort\\u order的$参数。我还会将id更改为\'sidebar-\'.$page->ID

add_action( \'widgets_init\', \'prefix_register_sidebars\' );
function prefix_register_sidebars() {
    foreach($pages as $page){
        register_sidebar( array(
        \'name\'=>$page->post_title, 
        \'id\'=> \'sidebar-\'.$page->ID,
        \'before_widget\'   => \'<div id="%1$s" class="\'.$page->slug.\' widget %2$s">\',
        \'after_widget\'    => \'</div>\',
        \'before_title\'    => \'<h3>\',
        \'after_title\'     => \'</h3>\'
        )
        ); 
}

结束

相关推荐

List all sidebars in metabox

我正在尝试添加一个元框来选择每页的侧边栏。为了创建我使用的元数据库this class施工相当简单:$meta_boxes[] = array( \'id\' => \'sidebars_side\', \'title\' => \'Page Sidebar\', \'pages\' => array(\'page\', \'post\'), \'context\' => \'side\', \'pri