web-dev-qa-db-ja.com

登録済みメタボックスの一覧の取得と削除

登録されているメタボックスの一覧を取得して削除する機能はありますか?追加と削除の方法があるのがわかります。

http://codex.wordpress.org/Function_Reference/remove_meta_box

http://codex.wordpress.org/Function_Reference/add_meta_box

8
Michael Ecklund

そうではありませんが、自分で定義できます。すべてのメタボックスは、多次元配列であるグローバル変数$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' );

これは global array $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' );
7
EAMann

WordPressダッシュボードには、メタボックスが表示されています。通常のコラムとサイドコラムがあります。

次のコードを使用して、登録済みのメタボックスのリストを取得し、それらをダッシュ​​ボードから削除することができます。

// Remove some non-sense meta boxes
function remove_dashboard_meta_boxes(){
    global $wp_meta_boxes;
    // Dashboard core widgets :: Left Column
    unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']);
    unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']);
    unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']);
    unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']);
    // Additional dashboard core widgets :: Right Column
    unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_recent_drafts']);
    unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']);
    unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);
    unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);
    // Remove the welcome panel
    update_user_meta(get_current_user_id(), 'show_welcome_panel', false);
}
add_action('wp_dashboard_setup', 'remove_dashboard_meta_boxes');

登録されたメタボックスのリストを見るにはprint_r($wp_meta_boxes);を使うだけです。

0
Michael Ecklund