我正在创建二十二岁的儿童主题。我想删除默认指定的所有侧边栏,并添加我自己的侧边栏。在二十四个主题中,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 本
答案 0 :(得分:1)
好的,我是个白痴。通过实际阅读文档(http://codex.wordpress.org/Function_Reference/unregister_sidebar)回答了我自己的问题: “在示例中,请注意我们在注册widgets_init钩子时分配优先级11。这是因为在父主题之前调用了子主题的functions.php文件,这意味着我们对unregister_sidebar()的调用将不会实现任何效果。边栏尚未注册。“