将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中存储一个值。