禁用侧边栏中的默认WordPress小工具

时间:2014-02-11 作者:Keat

我在创造我自己的主题。当我有一个干净的wordpress安装时,侧栏中有一些默认的小部件(搜索、分类、最近的帖子等)。我知道我可以通过在侧栏中添加一个小部件将它们从侧栏中删除,但我希望在默认情况下将它们从侧栏中删除。有没有一种方法可以在不禁用小部件的情况下做到这一点(unregister\\u widget())?

3 个回复
SO网友:cjbj

此功能将disable all widgets:

add_filter( \'sidebars_widgets\', \'wpse134172_disable_all_widgets\' );

function wpse134172_disable_all_widgets( $sidebars_widgets ) {
   if (true == true) {
     $sidebars_widgets = array( false );
     }
   return $sidebars_widgets;
   }
现在true=true conditional将始终禁用它们,而您只希望在干净的安装中实现这一点。因此,您必须添加一个不同的条件。哪一个取决于你的实际目的。

你可以使用is_active_widget 测试是否只有标准小部件处于活动状态。

另一种选择是使用after_switch_theme 钩子使停用只在主题被激活时发生。

您甚至可以检测到用户是否访问了后端的widgets页面,并确定在此之后,他显然对widgets保持冷静。这需要在数据库中设置一个选项。

SO网友:G.F.

这对我有用。从侧栏注销所有小部件。必须调用一次,例如在after\\u switch\\u theme action中

编辑:

https://developer.wordpress.org/reference/functions/wp_get_sidebars_widgets/

"E;此函数的访问被标记为私有。这意味着它不适用于插件或主题开发人员,仅用于其他核心功能;

add_action(\'after_switch_theme\', \'deregister_sidebar_widgets\');
function deregister_sidebar_widgets () {   
    $sidebar_widgets = wp_get_sidebars_widgets();

    foreach($sidebar_widgets[\'sidebar\'] as $i => $widget) {
        unset($sidebars_widgets[\'sidebar\'][$i]);
    }
    wp_set_sidebars_widgets($sidebars_widgets);
}

SO网友:JM01

我有一个小部件区域,名为;“aftercontent”;我想在查看名为Staff的自定义帖子类型时禁用Categories和Annual Archive小部件。我就是这样做的。

add_filter( \'sidebars_widgets\', \'epca_disable_widgets\' );
function epca_disable_widgets( $sidebars_widgets ) {
    if (\'staff\' == get_post_type()) {
        foreach($sidebars_widgets[\'aftercontent\'] as $i => $widget){
            if(substr( $widget, 0, 10 ) === "categories"){
                unset($sidebars_widgets[\'aftercontent\'][$i]);
            }
            if(substr( $widget, 0, 21 ) ===  \'annual_archive_widget\'){
                unset($sidebars_widgets[\'aftercontent\'][$i]);
            }
        }
    }
    return $sidebars_widgets;
}
我使用了;substr($widget,0,10)“”;因为如果我想删除任何以“quot;类别;。否则我只能说;如果($widget==“categories-3”)”;或者不管小部件的确切名称是什么。

结束

相关推荐

Prevent widgets removal

我正在用许多小部件构建一个网站。它们是高度定制的。当站点处于活动状态时,几个管理员/编辑器必须编辑这些小部件。现在,我很害怕看到一个小部件(及其配置)可以在一次鼠标移动中完全擦除(将其从侧栏中删除)。有没有什么方法可以防止小部件被删除,同时保持编辑其内容的能力?此外,在我看来,管理中的widget管理页面为“添加widget”模块提供了太多的空间,而为“激活的widget”模块提供的空间不足。这在创建站点时很有用,但在完成站点时却毫无用处。有没有办法切换这些模块的大小?非常感谢