从子主题中取消注册侧栏-主题

时间:2012-04-22 作者:ogni

我喜欢使用儿童主题。

父函数。php

function starkers_widgets_init() {
// Area 1, located at the top of the sidebar.
register_sidebar( array(
    \'name\' => __( \'Primary Widget Area\', \'starkers\' ),
    \'id\' => \'primary-widget-area\',
    \'description\' => __( \'The primary widget area\', \'starkers\' ),
    \'before_widget\' => \'<li>\',
    \'after_widget\' => \'</li>\',
    \'before_title\' => \'<h3>\',
    \'after_title\' => \'</h3>\',
) );

// Area 2 ...
我的孩子主题功能。php

function xtreme_unregister_sidebar() {
    unregister_sidebar(\'primary-widget-area\');
    }
    add_action( \'childtheme_sidebars\', \'xtreme_unregister_sidebar\' );
但不适用于
谢谢

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

检查下面的代码,我认为应该可以。

add_action( \'after_setup_theme\', \'remove_default_sidebars\', 11 );
function remove_default_sidebars(){
    remove_action( \'widgets_init\', \'starkers_widgets_init\' );
}

SO网友:leogopal

这篇文章的标题是注销小部件,而不是真正的边栏,尽管我很高兴用户得到了他们想要的东西。对于那些正在搜索如何使用在父主题中注册小部件的子主题注销小部件的用户,您可以使用以下方法:

假设父主题的Widget在widgets\\u init hook中注册,那么您只需将unregister\\u Widget()调用包装在函数中,将该函数挂接到widgets\\u init中,并为钩子指定比父主题的widgets\\u init-hooked函数更高的优先级。

假设父主题挂钩到widgets\\u init,而不提供优先级编号,则该函数将默认为10。所以,只需将钩子调用的优先级设置为11或更高。

这样的话:

add_action( \'widgets_init\', \'remove_theme_widgets\', 11 );

function remove_theme_widgets() {
    unregister_widget(\'parent_theme_widget_class\');
}
Source

结束

相关推荐

Sidebar missing from Homepage

这个home page 在所有最新帖子的其余部分下方显示侧边栏,为大部分(长)页面留下空白侧边栏区域。侧栏在任何single post.我的index.php 和single.php 除了“下一篇文章”和“上一篇文章”中的细微差别外,它们实际上是相同的。主题侧栏中没有部署小部件,称为侧栏1;没有其他提要栏。侧栏的所有元素都编码到侧栏中。php,并且没有条件检查哪个页面正在调用侧栏,因此它应该(并且正在)在索引页面和单个帖子上显示相同的内容,只是在不同的位置。类别页面也会在正确的位置显示侧栏。我想可能会有&