Bagaimana cara menghapus opsi layar tertentu dan kotak meta dari menambahkan / mengedit jenis posting?

10

Sekarang, ketika Anda menambahkan atau mengedit posting tertentu dalam jenis posting yang Anda inginkan, ada lebih banyak opsi layar juga. Meskipun, Opsi Layar ini menampilkan / menyembunyikan kotak meta. Saya ingin dapat memperoleh daftar semua opsi Layar dari kotak meta terdaftar yang terprogram ini, sehingga saya dapat kembali memeriksa apakah ada array Opsi Layar tertentu, dan jika ada, saya berencana menghapusnya secara terprogram.

WordPress - Opsi Layar - Tambah atau Edit Posting - Kotak Meta Klik Di Sini Untuk Screenshot Ukuran Penuh

Pertanyaan Bagaimana saya dapat secara program memperoleh daftar semua Opsi Layar yang terdaftar (kotak meta) pada jenis posting, di mana Anda ingin menambahkan atau mengedit posting tertentu dalam jenis posting yang Anda inginkan.

Pada akhirnya, tujuannya di sini adalah untuk menghapus opsi-opsi ini dan tidak hanya menonaktifkannya saja. Saya ingin melakukan sesuatu sesuai dengan apa yang telah saya capai untuk menghapus kotak meta dashboard yang tidak perlu .

Michael Ecklund
sumber

Jawaban:

13

Yang Anda butuhkan adalah global yang $wp_meta_boxesdiindeks oleh get_current_screen()->id. Menghapus opsi layar juga akan menghapus kotak metabox yang dapat Anda lakukan tepat sebelum opsi layar ditampilkan menggunakan 'in_admin_header'hook.

Jadi mari kita asumsikan Anda ingin menyingkirkan opsi layar "Kirim Trackbacks" yang Anda lihat di tangkapan layar ini:

Letakkan kelas berikut ke dalam functions.phpfile tema Anda atau dalam sebuah plugin yang mungkin Anda buat dan kodenya akan menghapus opsi layar "Kirim Trackbacks" (dan itu terkait dengan metabox, yang juga merupakan apa yang Anda inginkan, bukan?):

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

Dan inilah tampilannya setelah menambahkan kode di atas ke situs WordPress 3.4:

Menggunakan Zend debugger dalam PhpStorm di sini adalah inspeksi $wp_meta_boxes[get_current_screen()->id]sehingga Anda dapat melihat nilai apa yang dimiliki instalasi default WordPress 3.4 di layar edit Post (saya sudah melingkari indeks array yang saya referensikan dalam contoh saya, yaitu $wp_meta_boxes[get_current_screen()->id]['normal']['core']['trackbacksdiv']:

Semoga ini yang kamu cari?

MikeSchinkel
sumber
3
Sim.ply.A.ma.zing! Selamat, Ecklund, Anda tidak hanya menerima jawaban kanonik, tetapi jawaban yang legendaris ..!
brasofilo,
@brasofilo Terima kasih atas pujiannya. Saya merasa terhormat.
MikeSchinkel
@MikeSchinkel Ini berfungsi pada penambahan / pengeditan pos, dan terima kasih untuk itu, tetapi bagaimana Anda menghapus kotak meta opsi layar untuk halaman yang memiliki wp_list_table yang berisi daftar semua posting Anda? Lihat screenshot # 1.
Michael Ecklund
@MichaelEcklund Hai, saya kira saya tidak seharusnya menjawab pertanyaan ketika saya terlalu lelah untuk sepenuhnya memahami pertanyaan itu, eh? Jawaban atas pertanyaan yang tidak dijawab sebenarnya sangat berbeda dari yang saya jawab sehingga benar-benar dua pertanyaan yang berbeda. Bagaimana perasaan Anda tentang mengedit pertanyaan ini untuk menanyakan apa yang saya jawab, dan kemudian menambahkan pertanyaan lain sebagai menanyakan apa yang tidak saya jawab? Jika Anda dapat melakukannya dan memposting tautan di sini di komentar, maka saya akan menemukannya, saya juga akan mengirim jawaban untuk detail yang setara untuk pertanyaan itu. Kalau tidak, mungkin akan rumit untuk menulis satu jawaban yang koheren untuk keduanya.
MikeSchinkel
1
@MichaelEcklund Cool, terima kasih. Dijawab: wordpress.stackexchange.com/a/56896/89
MikeSchinkel
0

Maaf ini adalah lagu sampingan bit tapi saya menemukan itu berguna ketika datang untuk menghapus wp keluar dari kotak meta kotak tetapi tidak begitu banyak untuk kotak meta terkait tema khusus atau kustom. Untuk mengilustrasikan lebih banyak: Saya memasang tema baru yang memperkenalkan kotak meta khusus setiap kali Anda baru memposting / halaman itu muncul di opsi layar. (Saya baru mengenal wp). Untuk beberapa alasan menggunakan pendekatan Mike, saya tidak dapat menghapus kotak meta khusus ini, tetapi itu berfungsi untuk semua yang bukan kebiasaan. Untuk kebodohan saya, saya terus membentur dinding selama berjam-jam masih tidak bisa mengetahuinya jadi saya harus kembali ke ini:

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;
Yinnie
sumber