Özel Gönderi Metabox'ı Özel Gönderi Türü Ekranından Kaldır


17

Her biri karşılık gelen bir özel yazı türünde iki hiyerarşik özel sınıflandırma var. Yazı türünün düzenleme ekranında her biri için meta kutuyu kaldırmak istiyorum.

Okudum kaldır özel taksonomisi METABOX formu özel yazı alanı ve nasıl bir Kategori tarzı (hiyerarşik) taksonomisi METABOX kaldırırım? ama hala sıkışıp kaldım.

Kullandığım işlev:

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

Post_types ve custom_taxonomies ön düzeltmeyi kaldırdım, ama hepsi bu. admin_menuKanca ve add_meta_boxesCodex tarafından önerilen kanca kullanarak denedim . Her ikisini de denedim normalve sideüçüncü parametre için.

Yukarıdaki işlev, mu-pluginsyazı türlerini ve sınıflandırmalarını kaydeden işlevin altındaki bir dosyada bulunur .


EDIT: register_taxonomy işlevinde bir yazım hatasıydı. Korkunç biriyim. Yardım için herkese teşekkürler. Hala bazı şeyler öğrendim!


ile bile 'show_ui' => false?
JMau

1
Bir yayını düzenlerken değil, menüdeki kullanıcı arayüzünü hala istiyorum.
mrwweb

Yanıtlar:


37

Manuel aracılığıyla özel sınıflandırmasını kayıt varsa register_taxonomy o zaman METABOX nerede göründüğünü kontrol etmek argüman olarak geçebilir.

Ayarı Aşağıdaki örnekte show_uiiçin falsetamamen düzenleme ekranında, hızlı düzenleme ekranında ve yönetici menüden METABOX ortadan kaldıracaktır. Belirlediğiniz Ama eğer show_uihiç trueo kullanarak daha nüanslı kontrolünü elde edebilirsiniz size show_in_quick_editve meta_box_cbargümanlar (istendiği gibi sahte hayvan derilerine sonra CPT düzenleme ekranında METABOX ayarlama).

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,
);

İşe yarıyor. admin menüsünü saklayın ve özel gönderi türünü yeni form ekleyin. Teşekkürler.
IT Vlogs

Teşekkür ederim! Ben 'meta_box_cb' => null olarak ayarlamak sadece varsayılan wordpress sürümünü görüntüler nerede post-new gizlemek için yanlış arıyordu.
Ryan H

Pürüzsüz ve basit.
Travis van der Yazı Tipi

7

postGönderi türünü değil , düzenleme ekranından kutuları kaldırmak istediğinizi söylüyorsunuz , bu nedenle sınıflandırma işleminizi yalnızca uygulanmasını istediğiniz gönderi türleri için kaydedebilmeniz ve bundan tamamen kaçınmanız gerektiğini varsayarsınız . Kodeks'deki örnek, örnek sınıflandırmayı yalnızca aşağıdaki bookyazı türü için kaydeder :

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

Sanırım yapmanız gereken budur, ancak yazı türleri veya sınıflandırmalar için herhangi bir kayıt kodu göndermediniz.

Meta kutuları kendiniz oluşturduysanız - yani, bu kutular varsayılan olanlar değildir - bu sorunu önlemenin yolu meta kutuları post tipine özel kancalara kaydetmektir :

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

Veya yukarıdaki örneği takip etmek için:

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

Bu yaklaşımlardan biri bunu sizin için çözmelidir. Hiç kullanmanız gerektiğini düşünmüyorum remove_meta_box.

Meta kutuları kayıtlı oldukları posta türünden kaldırmaya çalışıyorsanız, bu işe yarar (yine Kodeks'deki örneği izleyerek):

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

admin_menuÇok erken olduğundan eminim , ama bunu doğrulamamıştım. add_metaboxesbenim için de çalışıyor. Senin için neden işe yaramadığını bilmiyorum.


Belirsiz olduğum için üzgünüm. Post Type ekranını kastetmiştim . Her sınıflandırma yalnızca bir özel gönderi türüne kaydedilir. Ben kısaca add_meta_boxes_ * kanca kullanmayı denedim ama (otomatik oluşturulan meta kutuları kullanıyorum olsa da) bazı varyasyonları denemek gidiyorum.
mrwweb

Sonra cevaptaki son seçenek bunu yapmalıdır. Test ettim. Kutu kayboluyor. Kutular olmadan taksonomilere sahip olmanın mantığını anladığımı söyleyemem.
s_ha_dum

(Yukarıdaki düzenlemeye bakınız. Yazım hatasıydı. Bu benim üzerimde ... Yardımınız için teşekkürler). Sorunuzu cevaplamak için, Gelişmiş Özel Alanla (sitenin kullanıcıları için daha iyi bir arayüz) taksonomileri görüntülüyorum.
mrwweb

Son örneğiniz beni doğru yöne getirdi, ancak benim için işe yarayan buydu: add_action ('admin_menu', 'remove_taxonomies_metaboxes');
Marcos Buarque

Bu sözdiziminin WordPress'in geçerli sürümüyle çalışmadığını gördüm, çalışan bir çözüm için bu cevabı kontrol edin .
Davey

3

Özel sınıflandırma yönetimi için ACF kullanıldığında, varsayılan meta kutular gereksizdir. Bu kodu başarıyla denedim:

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

Daha düşük öncelik (100), sınıflandırmalar CPT-UI gibi bir eklenti tarafından oluşturulmuşsa bu kodun çalışmasına izin verir.


tagsdiv sonda olmalıdır -: remove_meta_box( 'tagsdiv-'.$taxonomy, $post_type, 'side' );
Greg Haygood
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.