如何从添加/编辑帖子类型中删除某些屏幕选项和Meta框?

时间:2012-06-26 作者:Michael Ecklund

现在,当您在所需的帖子类型中添加或编辑特定帖子时,还有更多的屏幕选项。尽管如此,这些屏幕选项显示/隐藏元框。我希望能够以编程方式获得所有这些已注册的元框屏幕选项的列表,以便再次检查是否存在某个屏幕选项数组,如果存在,我计划以编程方式删除它们。

WordPress - Screen Options - Add or Edit Post - Meta BoxesClick Here For Full Size Screenshot

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

最终,这里的目标是删除这些选项,而不仅仅是禁用它们。我希望按照我所取得的成就做一些事情removing unnecessary dashboard meta boxes.

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

您需要的是全球$wp_meta_boxes 编制索引的人get_current_screen()->id. 删除屏幕选项还将删除元框,您可以在屏幕选项显示之前使用\'in_admin_header\'

因此,让我们假设您想取消此屏幕截图中显示的“发送Trackbacks”屏幕选项:

将以下类放入主题functions.php 文件或您可能正在构建的插件中,代码将删除“发送Trackbacks”(发送Trackbacks)屏幕选项(以及它的关联元盒,这也是您想要的,对吗?):

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网站后的效果:

使用Zend debugger within PhpStorm 以下是检查$wp_meta_boxes[get_current_screen()->id] 因此,您可以在编辑后屏幕中看到默认安装的WordPress 3.4的值(我在示例中引用了数组索引,即。$wp_meta_boxes[get_current_screen()->id][\'normal\'][\'core\'][\'trackbacksdiv\']:

希望这就是你想要的?

SO网友:Yinnie

抱歉,这有点偏颇,但我发现它在删除wp开箱即用的元框时很有用,但对于自定义或自定义主题相关的元框来说就没那么有用了。再举一个例子:我安装了一个新的主题,每当你新建一篇文章/页面时,它就会在屏幕选项中显示,并引入一个自定义的元框。(我是wp so的新手)由于某种原因,使用Mike的方法,我无法删除此自定义元框,但它适用于所有非自定义对象。由于我的愚蠢,我连续撞了好几个小时,仍然弄不清楚,所以我不得不回到这个问题上:

if (is_admin()) :
function my_remove_meta_boxes() 
{
  if(!current_user_can(\'administrator\')) 
  {
    remove_meta_box(\'theme_custom_meta_box\', \'post\', \'side\');
  }
}
add_action( \'add_meta_boxes\', \'my_remove_meta_boxes\' );
endif;

结束

相关推荐

Beta Versioning of Plugins

当我为一些bug编写修复程序时,我通常会增加版本并将其发送给bug查找程序,以查看我的修复程序是否有效。如果我有1.2.5 我想创建一个测试版,一旦我提交代码,它将变得多余,我应该使用1.2.5-beta 或1.2.6-beta? 我担心的是1.2.6 <;1.2.6-beta 因此,字符串比较可能有利于beta版,而bug查找程序不会收到发布稳定版本的通知。编辑:如果在不考虑发布类型的情况下对字符串进行绝对比较,则可以使用1.2.5-fix 然后1.2.6. 该问题也概述在http://en.wik