Hapus Metabox Taksonomi Kustom dari Layar Jenis Posting Kustom

15

Saya memiliki dua taksonomi hierarki kustom, masing-masing pada jenis pos kustom yang sesuai. Saya ingin menghapus metabox untuk masing-masing pada layar edit jenis posting.

Saya telah membaca menghapus metabox taksonomi kustom dari bentuk pos kustom dan Bagaimana Anda menghapus metabox taksonomi gaya-kategori? tapi saya masih terjebak.

Fungsi yang saya gunakan adalah:

function remove_taxonomies_metaboxes() {
    remove_meta_box( 'partner_typediv', 'partners', 'normal' );
    remove_meta_box( 'person_typediv', 'people', 'normal' );
}
add_action( 'admin_menu' , 'remove_taxonomies_metaboxes' );

Saya tidak memperbaiki post_types dan custom_taxonomies, tapi hanya itu. Saya sudah mencoba menggunakan admin_menuhook dan add_meta_boxeshook yang direkomendasikan oleh Codex. Saya sudah mencoba keduanya normaldan sideuntuk parameter ketiga.

Fungsi di atas terletak di mu-pluginsfile di bawah fungsi yang mendaftarkan jenis dan taksonomi pos.


EDIT: Itu salah ketik pada fungsi register_taxonomy. Saya orang yang mengerikan. Terima kasih untuk semua orang atas bantuannya. Saya masih belajar beberapa hal!

mrwweb
sumber
bahkan dengan 'show_ui' => false?
JMau
1
Saya ingin UI dalam menu tetap, hanya saja tidak ketika mengedit posting.
mrwweb

Jawaban:

35

Jika Anda secara manual mendaftarkan taksonomi kustom Anda melalui register_taxonomy maka Anda bisa memberikan argumen untuk mengontrol di mana metabox muncul.

Pada contoh di bawah ini, pengaturan show_uiuntuk falsemenghapus metabox sepenuhnya dari layar edit, layar edit cepat, dan menu admin. Tetapi jika Anda menyetel show_uike trueAnda dapat mencapai kontrol yang lebih bernuansa dengan kemudian menggunakan show_in_quick_editdan meta_box_cbargumen (mengatur nanti ke salah menyembunyikan metabox pada layar edit CPT seperti yang diinginkan).

register_taxonomy( 'your_custom_taxonomy', array( 'your_custom_post_type' ), $args );
$args = array(
    'show_ui'                    => true,
    'show_in_quick_edit'         => false,
    'meta_box_cb'                => false,
);
locomo
sumber
Ini bekerja. simpan menu admin dan hapus taksonomi khusus dalam bentuk tambah baru dari jenis pos kustom. Terima kasih.
Vlog IT
Terima kasih! Saya sedang mencari 'meta_box_cb' => false untuk menyembunyikannya di post-new, di mana pengaturan ke null hanya menampilkan versi wordpress default.
Ryan H
Halus dan sederhana.
Travis van der Font
6

Anda mengatakan ingin menghapus kotak dari postlayar edit, bukan layar jenis Posting, jadi dengan asumsi Anda seharusnya dapat mendaftarkan taksonomi Anda hanya untuk jenis posting yang Anda inginkan, dan hindari ini sama sekali. Contoh dalam Codex mendaftarkan taksonomi sampel hanya untuk bookjenis posting seperti:

register_taxonomy( 'genre', array( 'book' ), $args );

Saya pikir ini adalah apa yang perlu Anda lakukan, tetapi Anda tidak memposting kode registrasi untuk jenis posting atau taksonomi.

Jika Anda telah membuat kotak meta sendiri - yaitu, kotak ini bukan yang standar - maka cara untuk menghindari masalah ini adalah dengan mendaftarkan kotak meta pada kait spesifik jenis post :

do_action('add_meta_boxes_' . $post_type, $post);

Atau untuk mengikuti contoh di atas:

add_action('add_meta_boxes_book', 'your-box-callback');

Salah satu pendekatan itu harus menyelesaikan ini untuk Anda. Saya tidak berpikir Anda harus menggunakan remove_meta_boxsama sekali.

Jika Anda mencoba untuk menghapus kotak meta dari jenis posting yang mereka daftarkan, ini berfungsi (sekali lagi mengikuti contoh di Codex):

function remove_taxonomies_metaboxes() {
    remove_meta_box( 'genrediv', 'book', 'side' );
}
add_action( 'add_meta_boxes_book' , 'remove_taxonomies_metaboxes' );

Saya yakin itu admin_menuterlalu dini, tetapi tidak memverifikasi itu. add_metaboxesjuga bekerja untukku. Saya tidak tahu mengapa itu tidak berhasil untuk Anda.

s_ha_dum
sumber
Maaf karena tidak jelas. Maksud saya layar Jenis Posting . Setiap taksonomi hanya didaftarkan ke satu jenis pos khusus. Saya mencoba menggunakan add_meta_boxes_ * hook secara singkat tetapi saya akan mencoba beberapa variasi untuk itu (walaupun saya menggunakan metabox yang dibuat secara otomatis).
mrwweb
Maka pilihan terakhir dalam jawaban harus melakukannya. Saya mengujinya. Kotaknya hilang begitu saja. Saya tidak bisa mengatakan saya mengerti logika memiliki taksonomi tanpa kotak.
s_ha_dum
(Lihat edit di atas. Itu salah ketik. Itu pada saya ... Terima kasih atas bantuannya). Untuk menjawab pertanyaan Anda, saya menampilkan taksonomi dengan Bidang Kustom Tingkat Lanjut (ini adalah antarmuka yang lebih baik untuk pengguna situs).
mrwweb
Contoh terakhir Anda memang menempatkan saya di arah yang benar, tetapi inilah yang berhasil bagi saya: add_action ('admin_menu', 'remove_taxonomies_metaboxes');
Marcos Buarque
Saya menemukan sintaks ini tidak berfungsi dengan versi WordPress saat ini, periksa jawaban ini untuk solusi yang berfungsi.
Davey
3

Menggunakan ACF untuk manajemen taksonomi khusus, metabox default tidak diperlukan. Saya sudah mencoba, dengan sukses, kode ini:

      function remove_cuttax_metaboxes() {
           $post_type = 'post';
           $taxonomy = 'custom_taxonomy_slug';
           remove_meta_box( 'tagsdiv'.$taxonomy, $post_type, 'side' );

       }
       add_action( 'admin_menu' , 'remove_cuttax_metaboxes', 100 );

Prioritas rendah (100) membiarkan kode ini bekerja juga jika taksonomi dibuat oleh plugin seperti CPT-UI.

fabiodipa
sumber
tagsdiv seharusnya mengikuti -: remove_meta_box( 'tagsdiv-'.$taxonomy, $post_type, 'side' );
Greg Haygood