未从unctions.php的子主题激发的Widget_init操作

时间:2015-09-24 作者:ClemC

我需要添加新的侧边栏,以便在整个店铺的不同页面上相应地使用它们。

我使用Woocommerce和我自己的店面儿童主题。

这是函数中的一个片段。子主题的php文件。

add_action( \'init\', \'init_storefront_child\' );

function init_storefront_child() {

    // It seems Wordpress doesn\'t take into consideration the 2 lines below.
    remove_action( \'widgets_init\', \'storefront_widgets_init\' ); // Not fired (or overrided by something)
    add_action( \'widgets_init\', \'storefront_child_widgets_init\' ); // Not fired (or overrided by something)
}

function storefront_child_widgets_init() {

    register_sidebar( array(
        \'name\'          => __( \'Blog Sidebar\' ),
        \'id\'            => \'blog\',
        \'description\'   => \'Sidebar displaying in blog.\',
        \'before_widget\' => \'<aside id="%1$s" class="widget %2$s">\',
        \'after_widget\'  => \'</aside>\',
        \'before_title\'  => \'<h3 class="widget-title">\',
        \'after_title\'   => \'</h3>\',
    ) );
}
因此,“外观>小部件”菜单中的侧栏不会改变,并保持原来的状态。

我试图直接在店面主题文件中更改代码,但这完全不是解决方案。

“widgets\\u init”钩子函数会发生什么。php的子主题?

提前谢谢。

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

我只需要更改init_storefront_child0 因此,它在所有函数挂接后但在挂接实际执行之前激发:

add_action( \'init\', \'init_storefront_child\', 0 );

SO网友:AgepRoem

在子主题的函数中。php的文件,您需要使用remove_action( \'widgets_init\', \'$name\' ); 剧本例如,在你的212Child主题中functions.php 文件,使用:

remove_action( \'widgets_init\', \'twentytwelve_widgets_init\' ); //necessary to replace parent theme\'s code
然后在子主题的函数中挂接新的小部件

add_action( \'widgets_init\', \'new_twentytwelve_widgets_init\', 0 );

相关推荐

widgets not working

我粘贴了我的siderbar小部件代码widgets.php 文件 function right_sidebar_widget() { register_sidebar( array( \'name\' => \'Right Siderbar\', \'id\' => \'right-siderbar\', \'description\' => \'Right Sidebar\',