无法在自定义侧边栏中保存小工具

时间:2014-08-16 作者:kikaweb

我正在研究工具集引导主题的子主题。我需要创建一个自定义侧栏,所以我在子主题的函数中注册了新的侧栏。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。

4 个回复
最合适的回答,由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\' );
现在小部件保留在新注册的侧栏中。无论如何,感谢那些试图帮助我的用户。

SO网友:T.Todua

提要栏的ID(在php函数中)应该是小写的!!!!!!!!!!!

SO网友:Howard E

这对我来说似乎是个很好的测试。

function register_home_sidebar() {

/* Register the new sidebar. */
register_sidebar(
    array(
        \'id\' => \'home-sidebar\',
        \'name\' => __(\'Home Sidebar\'),
        \'description\' => __( \'This sidebar will display only on the homepage.\'),
        \'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\', \'register_home_sidebar\' );
也许您已经用另一个名称调用了一个函数?

SO网友:guest
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\' => \'\',
    \'after_widget\' => \'\',
    \'before_title\' => \'\',
    \'after_title\' => \'\',
    ) );
}
add_action( \'widgets_init\', \'custom_widget_areas_init\' );
结束

相关推荐

if is within sidebar

我有几个侧边栏(一个页面上不止一个),我想根据它们位于哪个侧边栏,为小部件设置不同的图像大小。我试过了if( ! dynamic_sidebar(\'my-sidebar\') ) : 以及if ( is_active_sidebar( \'left-sidebar\' ) ) : 但这似乎只是检查侧栏是否存在(它们确实存在)。如何获取:”if widget is located in sidebar A, give me this size, elseif widget is