Bagaimana cara mengubah posisi default kotak meta WP?

Jawaban:

22

Anda dapat menghapus kotak meta default dengan remove_meta_box dan menambahkannya kembali di posisi yang berbeda dengan add_meta_box:

add_action('do_meta_boxes', 'wpse33063_move_meta_box');

function wpse33063_move_meta_box(){
    remove_meta_box( 'postimagediv', 'post', 'side' );
    add_meta_box('postimagediv', __('Featured Image'), 'post_thumbnail_meta_box', 'post', 'normal', 'high');
}

Ini akan menghapusnya dari kolom samping dan menambahkannya ke kolom utama. ubah postdalam contoh ini menjadi apa pun jenis pos kustom Anda dinamai.

Milo
sumber
Ini sepertinya ideal, terima kasih lagi Milo saya akan mencobanya.
Mr.Brown
@ Moilo: Seolah-olah add_meta_box()kebutuhan $callbacknama fungsi, bagaimana saya tahu nama fungsi yang digunakan oleh WordPress? Misalkan jika saya ingin melakukan hal yang sama ke sidebar meta_box 'Kategori' (#categorydiv)?
Mayeenul Islam
5
@MayeenulIslam melihat file /wp-admin/edit-form-advanced.phpdan Anda akan melihat di mana WordPress menambahkan semua kotak meta inti dan callback serta argumen yang digunakannya. untuk kategori itu post_categories_meta_box.
Milo
5

Saya berjuang dengan ini juga. Saya tidak benar-benar menemukan cara bersih untuk mendefinisikan ulang tata letak / pesanan - terutama karena dapat diubah oleh pengguna ketika / jika mereka menyeret kotak.

Saya suka melakukan hal-hal 'dengan' wordpress (biasanya terbayar), lebih baik daripada berbenturan dengannya dan cara wordpress melakukannya adalah sebagai berikut:

wordpress menyimpan posisi yang diseret per pengguna per layar dan ada sejumlah besar kunci meta pengguna yang digunakan tergantung pada halaman / layar yang dihidupkan.

Jadi Anda bisa menambahkan tindakan atau filter untuk setiap pengguna baru untuk mengatur pengaturan pengguna seperti yang Anda inginkan.
1) Seret dan atur halaman yang ingin Anda pengaruhi, lalu 2) lihat di phpmyadmin pada meta pengguna Anda untuk id Anda dan lihat apa yang wp telah simpan di sana. 3) lalu kodekan tindakan pengguna baru sebagai berikut jika pengguna TIDAK memiliki pengaturan yang telah ditetapkan (untuk menghindari menimpa pilihan pribadi), Anda dapat mengaturnya seperti yang Anda inginkan - dengan nilai yang Anda temukan dari pengaturan manual.

Untuk mendapatkan ide meta-meta pengguna yang Anda cari, lihat tangkapan layar ini: http://wpusersplugin.com/related-plugins/amr-user-templates/screenshots-for-user-templates/

(Saya akhirnya menulis plugin generik sehingga saya bisa sebagai admin menentukan tata letak pilihan saya untuk semua pengguna untuk semua jenis halaman / layar. Kemudian mereka dapat mengubah itu misalnya ketika mereka menjadi lebih mahir. Juga tidak akan rusak ketika perubahan wp hal-hal seperti saya plugin hanya mengambil nilai-nilai pengguna templat, itu bahkan tidak mencoba untuk mengatur nilai ke nilai hardcoded.)

anmari
sumber
1
Meskipun saya menyukai ide di balik pendekatan ini, solusi Milo tampaknya jauh lebih cepat sehingga saya akan mencobanya, tetapi terima kasih telah meluangkan waktu untuk memberi tahu saya tentang pendekatan ini juga. Saya akan def melihat ke dalam menggunakan cara ini di kemudian hari. Saya menambahkan komentar Anda.
Mr.Brown
3
Plugin yang diajukan oleh Anmari adalah plugin komersial berbayar ... dan tidak terlihat diperbarui sejak Agustus tahun lalu. Apakah Anda masih mempertahankan plugin itu? Jika tidak, sudahkah Anda mempertimbangkan untuk membagikannya di Github?
unfulvio
Terima kasih @anmari untuk berbagi pendekatan ini, sangat membantu.
Maor Barazany
0

Jika Anda ingin memesan tepat kotak meta Anda, Anda dapat menggunakan plugin ini: https://wordpress.org/plugins/post-meta-box-order/

Ia bermain di meta-box-order_post dari opsi pengguna (tabel wp_usermeta).

Catatan 1: teknik ini dapat diterapkan ke CPT khusus dengan mengubah ujung bendera: meta-box-order_ [YOUR_CPT]

Catatan 2: jangan lupa untuk mengubah hash dalam kode plugin untuk menerapkan pesanan baru Anda ke semua pengguna yang ada.

rebe100x
sumber