在后端关闭管理栏(工具栏)-没有简单的方法

时间:2016-07-06 作者:C C

我正在为后端管理页面设计一个主题,这是一个基于WP构建的自定义web应用程序。

学习后admin-bar.php 以及功能is_admin_bar_showing() 几分钟后,我决定这样做:

function kill_admin_toolbar() {
    add_filter( \'xmlrpc_enabled\', \'__return_false\' );
    define( \'XMLRPC_REQUEST\', false );
}
add_action( \'admin_init\', \'kill_admin_toolbar\' );
我从未计划在这个应用程序中使用XML-RPC。

有了这段代码,我的管理屏幕顶部就不再有32px的固定工具栏了。

到目前为止,我没有看到任何奇怪的副作用;你们觉得怎么样?

要么这样要么我修改admin-bar.php 和插入return false; 函数定义之后is_admin_bar_showing(). 但是,触摸一个核心文件的想法确实让我感到困扰。

真让人恼火的是,在这个函数中没有足够早的钩子来完成这项工作。

1 个回复
最合适的回答,由SO网友:Tim Malone 整理而成

虽然你用的东西现在看来很管用,但我不能保证它现在或将来不会引起其他问题,因为你已经知道,欺骗is_admin_bar_showing() 这不是XMLRPC_REQUEST 常量的设计目的是。因此,即使它现在不会引起问题,我也不认为这样使用它会成为未来的证据。

然而,我继续你的追捕I think I\'ve found the filter you need: wp_admin_bar_class.

将false返回到此筛选器-或返回与已定义类的名称不匹配的任何字符串-will cause _wp_admin_bar_init() to short-circuit 因此,从一开始就不要初始化条形图:

add_filter( \'wp_admin_bar_class\', \'__return_false\' );
这是可行的,但不幸的是给了我一个很好的空白,管理栏过去是,因为wp-toolbar 仪表板上存在CSS类<html> 标签这已添加到wp-admin/includes/template.php 我无法立即在PHP中删除它。因此,您可能需要使用自定义CSS覆盖此填充(抱歉,可能根本不可能使用仅PHP的解决方案!):

add_action( \'admin_head\', function(){
  ?><style> html.wp-toolbar { padding-top: 0; } </style><?php
});
像这样删除管理栏可能会导致其他轻微的打嗝,因为is_admin_bar_showing() 从技术上讲,返回的结果仍然是真的,但我认为它们会很小,如果你找到了,找到解决方法可能不会太困难。

可以肯定的是(至少现在),您可以在源代码中查找函数的任何用法。从4.5.3开始,使用似乎仅限于四个文件:admin-header.php, template.php, admin-bar.php, 和post-template.php, 粗略地看一下,你可能想过滤admin_body_class 从那里删除“管理栏”,以防万一(但这对我来说并没有明显的区别)。

另请参阅“无自定义支持”类-我认为这不会影响您,因为it appears to be designed 仅适用于工具栏中的“无自定义时隐藏”菜单选项。。。你当然不会显示出来!