Gönderi türü ekleme / düzenleme işleminden Belirli Ekran Seçenekleri ve Meta Kutular Nasıl Kaldırılır?


10

Şimdi, istediğiniz gönderi türüne belirli bir gönderi eklediğinizde veya düzenlediğinizde, daha fazla ekran seçeneği de vardır. Bununla birlikte, bu Ekran Seçenekleri meta kutuları gösteriyor / gizliyor. Belirli bir Ekran Seçenekleri dizisinin olup olmadığını tekrar kontrol edebilmem için meta kutuların tüm kayıtlı Ekran Seçeneklerinin bir listesini programsal olarak elde edebilmek istiyorum ve eğer varsa, bunları programlı olarak kaldırmayı planlıyorum.

WordPress - Ekran Seçenekleri - Yazı Ekle veya Düzenle - Meta Kutular Tam boyutlu ekran görüntüsü için tıklayınız.

Soru İstediğiniz gönderi türüne belirli bir gönderi eklemek veya düzenlemek istediğiniz gönderi türlerinde kayıtlı tüm Ekran Seçeneklerinin (meta kutular) bir listesini nasıl programlı olarak alabilirim.

Sonuç olarak, buradaki amaç, sadece devre dışı bırakmak değil, bu seçenekleri kaldırmaktır. Gereksiz pano meta kutularını kaldırmak için başardıklarım boyunca bir şeyler yapmak istiyorum .

Yanıtlar:


13

İhtiyacınız olan şey global olarak $wp_meta_boxesendekslenmiştir get_current_screen()->id. Ekran seçeneklerinin kaldırılması, 'in_admin_header'kanca kullanılarak ekran seçenekleri görüntülenmeden hemen önce yapabileceğiniz meta kutuları da kaldırır .

Bu ekran görüntüsünde gördüğünüz "Geri İzleme Gönder" ekran seçeneğinden kurtulmak istediğinizi varsayalım :

Aşağıdaki sınıfı temanızın functions.phpdosyasına veya oluşturduğunuz bir eklentiye bırakın ve kod "Geri İzlemeler Gönder" ekran seçeneğini kaldıracaktır (ve ilişkili meta kutusu, bu da istediğiniz şeydir, değil mi?):

class Michael_Ecklunds_Admin_Customizer {
  function __construct() {
    add_action( 'in_admin_header', array( $this, 'in_admin_header' ) );
  }
  function in_admin_header() {
    global $wp_meta_boxes;
    unset( $wp_meta_boxes[get_current_screen()->id]['normal']['core']['trackbacksdiv'] );
  }
}
new Michael_Ecklunds_Admin_Customizer();

Ve yukarıdaki kodu bir WordPress 3.4 sitesine ekledikten sonra şöyle görünüyor:

PhpStorm içindeki Zend hata ayıklayıcısını kullanmak burada inceleniyor , $wp_meta_boxes[get_current_screen()->id]böylece WordPress 3.4'ün varsayılan kurulumunun Post edit ekranında ne değerlerini görebilirsiniz (örneğimde referans verdiğim dizi dizinlerini daire içine aldım, yani $wp_meta_boxes[get_current_screen()->id]['normal']['core']['trackbacksdiv']:

Umarım aradığın şey bu mu?


3
Tek kelimeyle muhteşem! Tebrikler Ecklund, sadece kanonik bir cevap değil, efsanevi bir cevap aldınız ..!
brasofilo

@brasofilo İltifat için teşekkürler. Onur duydum.
MikeSchinkel

@MikeSchinkel Bu, bir gönderi ekleme / düzenleme üzerinde çalışır ve bunun için teşekkür ederiz, ancak tüm gönderilerinizin listesini içeren bir wp_list_table içeren sayfa için ekran seçeneği meta kutularını nasıl kaldırırsınız? Ekran görüntüsü # 1'e bakın.
Michael Ecklund

@MichaelEcklund Merhaba, sanırım soruyu tam olarak anlayamayacak kadar yorgun olduğumda soruları cevaplamamalıyım, ha? Cevaplanmamış sorunun cevabı aslında cevapladığım sorudan önemli ölçüde farklı, bu yüzden gerçekten iki farklı soru. Ne cevap verdiğimi sormak için bu soruyu düzenlemek ve daha sonra sormadığımı sormak için başka bir soru eklemek hakkında ne düşünüyorsunuz? Bunu yapabilir ve yorumlarda buraya bir bağlantı gönderirseniz, bu yüzden bu soru için de eşdeğer ayrıntıların bir cevabını göndereceğim. Aksi takdirde, her ikisi için tutarlı bir cevap yazmak karmaşık olabilir.
MikeSchinkel

1
@MichaelEcklund Havalı, teşekkürler. Cevaplandı: wordpress.stackexchange.com/a/56896/89
MikeSchinkel

0

Üzgünüm bu biraz yan parça ama wp kutu meta kutuları kaldırma konusunda yararlı buldum ama özel veya özel tema ile ilgili meta kutuları için çok fazla değil. Biraz daha göstermek için: Ekran seçeneklerinde her yazı / sayfa görüntülendiğinde özel bir meta kutu tanıtan yeni bir tema yükledim. (Wp için yeniyim) Mike'ın yaklaşımını kullanarak bazı nedenlerden dolayı bu özel meta kutusunu kaldıramıyordum, ancak özel olmayan her şey için çalıştı. Aptallığım için saatlerce duvara çarpmaya devam ettim, bu yüzden buna geri dönmek zorunda kaldım:

if (is_admin()) :
function my_remove_meta_boxes() 
{
  if(!current_user_can('administrator')) 
  {
    remove_meta_box('theme_custom_meta_box', 'post', 'side');
  }
}
add_action( 'add_meta_boxes', 'my_remove_meta_boxes' );
endif;
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.