Dapatkan Daftar Kotak Meta Terdaftar dan Menghapusnya


9

Apakah ada fungsi untuk mendapatkan daftar Meta Box yang terdaftar dan menghapusnya? Saya melihat ada metode untuk menambah, dan menghapus.

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

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


1
Harap gulung balik perubahan Anda dan ajukan pertanyaan baru alih-alih hanya menambahkan ke yang sudah ada. Mendapatkan opsi layar sangat berbeda dari mendapatkan kotak meta.
EAMann

Jawaban:


9

Tidak juga, tetapi Anda dapat menentukan sendiri. Semua kotak meta disimpan dalam variabel global $wp_meta_boxesyang merupakan array multi dimensi.

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];          
}

Array ini akan menampilkan semua kotak meta yang terdaftar untuk layar tertentu dan konteks tertentu. Anda juga dapat menelusuri lebih jauh karena array ini juga merupakan array multidimensi yang memisahkan kotak meta berdasarkan prioritas dan id.


Jadi katakanlah Anda ingin mendapatkan larik yang berisi semua kotak meta yang prioritas "normal" di Dasbor admin. Anda akan memanggil yang berikut ini:

$dashboard_boxes = get_meta_boxes( 'dashboard', 'normal' );

Ini identik dengan array global$wp_meta_boxes['dashboard']['normal'] dan juga array multi dimensi.

Menghapus kotak meta inti

Katakanlah Anda ingin menghapus banyak kotak meta. Fungsi di atas dapat sedikit diubah untuk memanfaatkan bahwa:

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] );
}

Jika Anda ingin menghapus, misalnya, widget tautan masuk dari Dasbor, Anda akan menelepon:

remove_meta_boxes( 'dashboard', 'normal', 'core', 'dashboard_incoming_links' );

hai di sana, saya tahu sudah lama Anda menjawab tetapi bisakah Anda melihat pertanyaan saya tentang masalah yang sama persis ini? Ini globaltidak bekerja untuk saya! Terima kasih. wordpress.stackexchange.com/questions/318834/…
middlelady

1

Di Dashboard WordPress, ada kotak meta yang ditampilkan. Ada kolom normal, dan kolom samping.

Saya dapat memperoleh daftar kotak meta yang terdaftar dan menghapusnya dari dasbor dengan menggunakan kode berikut:

// 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');

Cukup gunakan print_r($wp_meta_boxes);untuk melihat daftar kotak meta yang terdaftar.


1
Kode ini tidak menyediakan daftar kotak meta yang tersedia.
fuxia

@toscho Ini tidak jika Andaprint_r($wp_meta_boxes);
Michael Ecklund
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.