如何以编程方式最小化WP仪表板菜单?

时间:2013-05-06 作者:WagnerMatosUK

我希望通过编程方式(使用js或php,但我认为使用js更简单)隐藏仪表板管理菜单,使用的功能与内置的功能相同。

我想要的是,当用户单击仪表板中的自定义链接时,管理菜单将折叠,因此我有更多的屏幕空间。有人知道怎么做吗?

我已经搜索了几天,只能找到如何完全删除菜单,这不是我想要的。我可以用一个自定义js脚本来实现这一点,但是我更愿意在当前js函数中添加一个额外的事件处理程序来隐藏菜单。

2 个回复
最合适的回答,由SO网友:Ralf912 整理而成

将javascript添加到所有管理页面:

add_action( \'admin_print_scripts\', \'auto_collapse_menu\' );

function auto_collapse_menu(){

    wp_enqueue_script( \'autocollapsemenu\', plugins_url( \'autocollapsemenu.js\', __FILE__ ), array( \'jquery\' ), false, true );

}
javascript:

jQuery(document).ready( function($){

    // catch every click inside element with ID \'adminmenu\'
    $( \'#adminmenu\' ).click(
        function(e){

            // true if the menu is folded, false if not
            var bodyFolded    = $(document.body).hasClass( \'folded\' );

            // true if the uncollapse button was clicked, else false 
            var uncollapseBtn = $(e.target).is( \'div\' );

            // true if the clicked element has a class
            var hasClass      = ( typeof $(e.target).attr( \'class\' ) ) != \'undefined\';

            if ( ! bodyFolded && ! uncollapseBtn && hasClass ) {
                body.addClass( \'folded\' );
                setUserSetting( \'mfold\', \'f\' );
            }
        }
    );

});
我们想捕捉管理菜单中的所有点击。如果我们在管理菜单中点击,我们必须检查管理菜单是否已经折叠。现在,我们必须检查是否单击了“展开”按钮(取消折叠按钮)。这有点棘手,因为如果“管理”菜单被折叠,“展开”按钮没有类或id<div>-要素But 所有其他菜单项也<div>-元素。因此,我们可以测试单击的元素是否有类。如果单击的元素具有类,则它不是“展开”按钮,菜单应折叠。

现在将所有内容放在一起:如果管理菜单未折叠AND 单击的元素不是div元素AND 单击的元素有一个类,那么我们希望它是not 单击的展开按钮和菜单应折叠。

在本例中,我们添加类folded 至车身构件。现在我们必须存储已折叠的管理菜单。因为在下一个页面加载时,添加的类将被删除。我们用setUserSetting( \'mfold\', \'f\' ).

setUserSetting() 是来自的函数wp-includes/js/utils.js 并在WordPress cookie中存储一个值。

SO网友:truedezign

添加到setUserSetting() 讨论,WordPress Cookie是如何在用户配置文件中设置每个用户的首选项的。所以,如果你像我一样,不小心做了一些东西,碰巧将设置保存到了cookie中,那么你就会被保存下来的设置所困扰;“已折叠”;您可以使用以下示例重置所有用户首选项:

将其粘贴到子主题函数中。php文件。

这将设置折叠默认值:

function wpdocs_always_collapse_menu() {
if ( \'f\' != get_user_setting( \'mfold\' ) ) {
    set_user_setting( \'mfold\', \'f\' );
}
}
add_action( \'admin_head\', \'wpdocs_always_collapse_menu\' );
这将重置解压默认值:

function wpdocs_always_unfold_menu() {
if ( \'f\' != get_user_setting( \'unfold\' ) ) {
set_user_setting( \'unfold\', \'f\' );
}
}
add_action( \'admin_head\', \'wpdocs_always_unfold_menu\' );

结束

相关推荐

Remove Widgets in Dashboard

另一个noob问题。。。当作者登录并访问其仪表板时,他们会看到各种小部件,例如Internet Explorer警告、WordPress动态新闻。是否要为所有用户(现在和将来)删除所有这些内容,以便他们只看到“快速按”&;\'现在的小部件?谢谢