登録済みのメタボックスのリストを取得して削除する


9

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

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

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


1
変更をロールバックして、既存の質問に追加するのではなく、新しい質問をしてください。画面オプションの取得は、メタボックスの取得とは大きく異なります。
EAMann 2012年

回答:


9

実際はそうではありませんが、独自に定義できます。すべてのメタボックス$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' );

こんにちは、長い間お答えいただきましたが、まったく同じ問題についての私の質問をご覧ください。global私のために働いていません!ありがとう。wordpress.stackexchange.com/questions/318834/...
middlelady

1

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);登録済みのメタボックスのリストを表示するために使用します。


1
このコードは、利用可能なメタボックスのリストを提供しませ
fuxia

@toschoそれあなたならそうしますprint_r($wp_meta_boxes);
マイケル・エクルンド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.