关于wordpress:unregister_sidebar不起作用,我在做什么错?

unregister_sidebar not working, what am I doing wrong?

我正在为"二十一"创建一个儿童主题。 我要删除默认情况下指定的所有侧边栏,并添加自己的一个。 在二十一个主题中,functions.php是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
// etc etc etc
function twentyeleven_widgets_init() {

    register_widget( 'Twenty_Eleven_Ephemera_Widget' );

    register_sidebar( array(
        'name' => __( 'Main Sidebar', 'twentyeleven' ),
        'id' => 'sidebar-1',
        'before_widget' => '',
        'after_widget' =>"</aside>",
        'before_title' => '<h3 class="widget-title">',
        'after_title' => '',
    ) );

    // etc. 4 others registered too...
}
add_action( 'widgets_init', 'twentyeleven_widgets_init' );

// etc etc etc
?>

现在,我意识到,如果我只注释掉添加操作,这将全部删除它们。 我不想这样做,因为当父主题更新时,它们会重新出现。

我尝试在儿童主题的functions.php中执行此操作,但未成功:

1
2
3
4
5
6
7
8
9
10
11
<?php
// etc etc etc

function unregister_old_sidebars() {
    unregister_sidebar('sidebar-1');
    //and i've tried unregister_sidebar('Main Sidebar');
}
add_action( 'widgets_init', 'unregister_old_sidebars' );

// etc etc etc
?>

食品法典委员会说使用unregister_sidebar($ id),其中$ id是"添加时补充工具栏的ID"。 所以...我猜这是'widgets_init'操作错了吗? 子主题功能是否在父功能之后不能运行?

救命! :D


好吧,我是个白痴。 通过实际阅读文档(http://codex.wordpress.org/Function_Reference/unregister_sidebar)回答了我自己的问题:
"在示例中,请注意,在注册widgets_init钩子时,我们将优先级设置为11。这是因为子主题的functions.php文件在父主题之前被调用,这意味着我们对unregister_sidebar()的调用不会完成任何操作,因为 侧栏尚未注册。"