问题描述

现在,当您在所需的帖子类型中添加或编辑特定帖子时,还有更多的屏幕选项。虽然这些屏幕选项显示/隐藏元框。我想以编程方式获得所有这些注册的屏幕选项的列表,以便我可以再次检查是否存在一系列屏幕选项,如果这样,我打算以编程方式删除它们。

Click Here For Full Size Screenshot

问题我可以如何以编程方式获取所需注册的屏幕选项 (元框) 的列表,您可以在所需的帖子类型中添加或编辑特定的帖子。

最终,这里的目标是删除这些选项,而不仅仅是禁用它们。我正在寻找一些符合 removing unnecessary dashboard meta boxes 所做的一切。

最佳解决方案

您需要的是在 get_current_screen()->id 索引的全球 $wp_meta_boxes 中。删除屏幕选项也将删除您可以使用'in_admin_header'钩子显示屏幕选项之前您可以执行的 metaboxes 。

所以让我们假设你想摆脱你在这个屏幕截图中看到的”Send Trackbacks” 屏幕选项:

将以下课程放入主题的 functions.php 文件中,或者在您可能正在构建的插件中,代码将删除”Send Trackbacks” 屏幕选项 (它是相关的 metabox,这也是您想要的,对吗?)

class Michael_Ecklunds_Admin_Customizer {
  function __construct() {
    add_action( 'in_admin_header', array( $this, 'in_admin_header' ) );
  }
  function in_admin_header() {
    global $wp_meta_boxes;
    unset( $wp_meta_boxes[get_current_screen()->id]['normal']['core']['trackbacksdiv'] );
  }
}
new Michael_Ecklunds_Admin_Customizer();

以下代码添加到 WordPress 3.4 站点后,它的外观如下:

在 PhpStorm 中使用 Zend 调试器是 $wp_meta_boxes[get_current_screen()->id]的检查,所以你可以看到 WordPress 3.4 的默认安装在 Post 编辑屏幕中的值 (我已经在我的例子中引用了数组索引,即 $wp_meta_boxes[get_current_screen()->id]['normal']['core']['trackbacksdiv']

希望这是你正在寻找的?

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。