問題描述

現在,當您在所需的帖子類型中添加或編輯特定帖子時,還有更多的屏幕選項。雖然這些屏幕選項顯示/隱藏元框。我想以編程方式獲得所有這些註冊的屏幕選項的列表,以便我可以再次檢查是否存在一系列屏幕選項,如果這樣,我打算以編程方式刪除它們。

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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。