Php 在wordpress中,如何从侧边栏中删除搜索小部件

Php 在wordpress中,如何从侧边栏中删除搜索小部件,php,wordpress,hook,Php,Wordpress,Hook,$registered_sidebars=wp_get_sidebars_widgets();得到这样的输出 Array ( [sidebar] => Array ( [0] => search-2 [1] => recent-posts-2 [2] => recent-comments-2 [3

$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' ); 
但不起作用

注销侧栏,而不是侧栏小部件。”search-2’不是边栏,而是一个小部件

列出活动的小部件。如果您想从wp_get_sidebars_widgets返回的数组中删除'search-2',只需在仪表板中转到外观>widgets并从侧栏中“删除”搜索小部件

编辑:要隐藏特定页面上的小部件,可以使用插件,如或

在编程方面,有几种选择

您可以为不同的页面使用不同的侧栏。您可以使用模板页面上的.function包含特定的侧栏。只需输入备用侧边栏名称

您还可以使用“边栏小部件”过滤器

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对上述代码进行轻微更改。应该可以防止错误。

上述解决方案非常好,但是如果您不方便使用php,最简单的方法实际上是使用css并隐藏搜索小部件:

.widget.widget_search{ display:none; }
所以,如果你想在主页上隐藏它,你可以使用如下方式:

body.home .widget.widget_search{ display:none; }
希望这对您有所帮助;)

干杯,
phpbits

它对我有用。从侧栏注销所有小部件。您必须调用它一次,例如在after_switch_theme action中

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);
    }
}

只需进入wordpress后端中的
Appearance>Widgets
,删除搜索结果页面的搜索widgetonly,需要删除搜索结果页面的所有其他页面,所有其他页面搜索-2需要设置错误,如警告:为foreach()提供的参数无效您是否将其放在了theme的functions.php文件中?耶,复制到function.php中,仅将is_home()更改为is_search()。我对脚本进行了一些更新以防止出错,在is_home()上运行时是否会出现相同的错误?