我正在研究工具集引导主题的子主题。我需要创建一个自定义侧栏,所以我在子主题的函数中注册了新的侧栏。php文件:
function wpbootstrap_register_newsidebar() {
/* Register the new sidebar. */
register_sidebar(
array(
\'id\' => \'sidebar-999\',
\'name\' => __( \'Home sidebar\', \'wpbootstrap\' ),
\'description\' => __( \'This sidebar will display only on the homepage.\', \'wpbootstrap\' ),
\'before_widget\' => \'<aside id="%1$s" class="widget %2$s">\',
\'after_widget\' => \'</aside>\',
\'before_title\' => \'<h3 class="widget-title">\',
\'after_title\' => \'</h3>\'
)
);
} add_action( \'widgets_init\', \'wpbootstrap_register_newsidebar\' );
我可以在管理屏幕中看到新的侧栏,将小部件拖动到其中,添加标题,重新排序,但如果我重新加载页面,所有小部件都会从侧栏中消失。父主题已经有3个内置widgetized区域,它们工作得很好:我可以在这些区域中添加和保存小部件。此外,如果我切换到默认主题,如214,并尝试使用上面粘贴的相同代码注册自定义侧栏,我会得到一个功能齐全的自定义侧栏区域。显然我的代码不是问题所在。
我试图在父主题的供应商支持论坛上发布这个问题,但还没有收到他们的回复,所以我想问问更广泛的WP社区,以防有人遇到类似的问题。
我不是WP专家,也不知道自定义widgetized区域是如何在WP环境中创建和存储的,但如果有人能给我指出正确的方向,我将非常乐意了解更多。
不幸的是,我正在开发一个本地版本的网站,所以我无法提供任何测试URL。
最合适的回答,由SO网友:kikaweb 整理而成
好的,最后支持团队回答了我的问题,即使没有真正的解决方案,也建议了一种变通方法。由于答案深藏在供应商用户论坛中-link here - 我在这里分享解决方案,以防有人对这个或另一个主题有同样的问题。
基本上,这是父主题(工具集引导)中的一个bug,它重置了自定义侧栏。为了覆盖这种行为,我按照支持团队的建议,使用这段代码来注册侧栏:
//Override check sidebar widgets filter in child theme
function wpbootstrap_checksidebars_widgets($sidebars_widgets) {
return $sidebars_widgets;
}
add_filter(\'sidebars_widgets\',\'wpbootstrap_checksidebars_widgets\' );
//Now user can add custom widget areas
function custom_widget_areas_init() {
register_sidebar( array(
\'name\' => \'Front Page Widget Area\',
\'id\' => \'frontpage-widgets\',
\'before_widget\' => \'<div>\',
\'after_widget\' => \'</div>\',
\'before_title\' => \'<h2 class="rounded">\',
\'after_title\' => \'</h2>\',
) );
}
add_action( \'widgets_init\', \'custom_widget_areas_init\' );
现在小部件保留在新注册的侧栏中。无论如何,感谢那些试图帮助我的用户。