$ registered_sidebars = wp_get_sidebars_widgets();得到像这样的输出
Array
(
[sidebar] => Array
(
[0] => search-2
[1] => recent-posts-2
[2] => recent-comments-2
[3] => archives-2
[4] => categories-2
[5] => meta-2
[6] => advanced_sidebar_menu_category-2
[7] => advanced_sidebar_menu-3
)
)
我想从数组中删除search-2,像这样尝试
unregister_sidebar( 'search-2' );
但不起作用
答案 0 :(得分:2)
unregister_sidebar取消注册侧边栏,而不是侧边栏小部件。 'search-2'不是侧边栏,而是小部件。
wp_get_sidebars_widgets列出了活动小部件。如果你想从wp_get_sidebars_widgets返回的数组中删除'search-2',只需输入Appearance>信息中心中的小部件,并从侧边栏“删除”搜索小部件。
修改:要隐藏特定网页上的小部件,您可以使用Display Widgets,Widget Logic或Jetpack等插件。
程序化的,有几种选择。
您可以使用不同的侧边栏用于不同的页面。您可以使用模板页面上的get_sidebar。功能添加特定的侧边栏。只需输入备用侧边栏名称即可。
您还可以使用'sidebars_widgets'过滤器。
add_filter( 'sidebars_widgets', 'disable_search_widget' );
function disable_search_widget( $sidebars_widgets ) {
if ( is_home() && is_array($sidebars_widgets['primary-widget-area']) ) {
foreach($sidebars_widgets['primary-widget-area'] as $i => $widget) {
if(strpos($widget, 'search-2') !== false) {
unset($sidebars_widgets['primary-widget-area'][$i]);
}
}
}
return $sidebars_widgets;
}
编辑2 稍微更改上面的代码。应该防止错误。
答案 1 :(得分:0)
上面的解决方案很棒但是如果你不方便使用php,最简单的方法就是使用css并隐藏搜索小部件:
.widget.widget_search{ display:none; }
因此,如果您想在主页上隐藏它,您可以使用以下内容:
body.home .widget.widget_search{ display:none; }
希望这会对你有所帮助;)
干杯, phpbits
答案 2 :(得分:0)
对我有用。从侧边栏中注销所有小部件。您必须调用一次,例如在after_switch_theme操作
中add_action('after_switch_theme', 'deregister_sidebar_widgets');
function deregister_sidebar_widgets () {
$sidebar_widgets = wp_get_sidebars_widgets();
if (isset($sidebar_widgets['sidebar'])) {
foreach($sidebar_widgets['sidebar'] as $i => $widget) {
unset($sidebars_widgets['sidebar'][$i]);
}
wp_set_sidebars_widgets($sidebar_widgets);
}
}