unregister_sidebar无法正常工作,我做错了什么?

时间:2012-02-22 18:52:37

标签: wordpress widget wordpress-theming sidebar

我正在创建二十二岁的儿童主题。我想删除默认指定的所有侧边栏,并添加我自己的侧边栏。在二十四个主题中,functions.php是这样的:

<?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' => '<aside id="%1$s" class="widget %2$s">',
        'after_widget' => "</aside>",
        'before_title' => '<h3 class="widget-title">',
        'after_title' => '</h3>',
    ) );

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

// etc etc etc
?>

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

我试图在子主题的functions.php中这样做但没有成功:

<?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
?>

Codex说要使用unregister_sidebar($ id),其中$ id是“添加时边栏的ID”。那么......我猜这是'widgets_init'动作是错的?子主题功能是否在父功能之后运行?

帮助! :d 本

1 个答案:

答案 0 :(得分:1)

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