実際はそうではありませんが、独自に定義できます。すべてのメタボックス$wp_meta_boxes
は、多次元配列であるグローバル変数に格納されます。
function get_meta_boxes( $screen = null, $context = 'advanced' ) {
global $wp_meta_boxes;
if ( empty( $screen ) )
$screen = get_current_screen();
elseif ( is_string( $screen ) )
$screen = convert_to_screen( $screen );
$page = $screen->id;
return $wp_meta_boxes[$page][$context];
}
この配列は、特定の画面と特定のコンテキストに登録されているすべてのメタボックスを表示します。この配列は、優先度とIDでメタボックスを分離する多次元配列でもあるため、さらにドリルダウンすることもできます。
したがって、管理ダッシュボードで「通常」の優先度のメタボックスをすべて含む配列を取得するとします。次のように呼び出します。
$dashboard_boxes = get_meta_boxes( 'dashboard', 'normal' );
これはグローバル配列$wp_meta_boxes['dashboard']['normal']
と同じであり、多次元配列でもあります。
コアメタボックスの削除
一連のメタボックスを削除するとします。上記の関数を少し調整して、次のことを利用できます。
function remove_meta_boxes( $screen = null, $context = 'advanced', $priority = 'default', $id ) {
global $wp_meta_boxes;
if ( empty( $screen ) )
$screen = get_current_screen();
elseif ( is_string( $screen ) )
$screen = convert_to_screen( $screen );
$page = $screen->id;
unset( $wp_meta_boxes[$page][$context][$priority][$id] );
}
たとえば、ダッシュボードから着信リンクウィジェットを削除したい場合は、次のように呼び出します。
remove_meta_boxes( 'dashboard', 'normal', 'core', 'dashboard_incoming_links' );