Adakah yang tahu cara menonaktifkan fungsi ini sehingga kotak meta tidak dapat diposisikan ulang?
Saya memiliki masalah yang sama, dan Google membawa saya ke sini. Sayangnya tidak ada jawaban yang membantu, tetapi saya akhirnya menemukan jawabannya, dan itu cukup mudah!
admin_enqueue_scripts
, dan itu bekerja dengan baik.Nonaktifkan fungsi penyortiran dengan meletakkan ini di file JavaScript itu:
jQuery(document).ready( function($) {
$('.meta-box-sortables').sortable({
disabled: true
});
$('.postbox .hndle').css('cursor', 'pointer');
});
Pada dasarnya ini hanya menonaktifkan jQuery UI Sortable , yang mendukung fungsi menyeret metabox ( postbox.dev.js: 64 ). Ini juga mengalihkan kursor pada pegangan metabox ke penunjuk tetikus standar alih-alih kursor bergerak (ide milik brasofilo di bawah).
Semoga ini membantu!
Sunting: Saya harus menambahkan bahwa mungkin perlu mengikuti beberapa saran lainnya di sini dan menonaktifkan penghematan pesanan metabox. Ini akan mencegah kebingungan jika sesuatu yang salah diaktifkan kembali.
Suntingan kedua: Untuk kepentingan generasi masa depan (dan pencari Google di masa depan), perbaikan ini diuji di WordPress 3.3.1. Saya tidak dapat berbicara dengan versi lain!
$('.postbox .hndle').css('cursor','default');
:::: Re: edit 2 , Anda harus terus memperbarui Jawaban di masa mendatang: PCara tercepat menonaktifkan JS untuk fungsi ini. Tapi saya pikir, lebih baik bila Anda juga membatalkan registrasi gaya untuk kotak dan init gaya kustom tanpa efek untuk mouse dan ikon buka / tutup pada kotak meta.
sumber
admin_init
hanya dalam beberapa jenis posting tertentu?Saya menjawab pertanyaan serupa dengan saran untuk memungkinkan menyeret, tetapi nonaktifkan menyimpan pesanan baru di sisi server. Ini mungkin memberi Anda lebih banyak kontrol, dan lebih tahan di masa depan karena JavaScript dapat berubah dengan cepat, tetapi protokol untuk berkomunikasi dengan server mungkin tetap lebih kuat. Contoh ini menonaktifkan semua seret, tetapi Anda dapat memperluasnya untuk memeriksa kotak atau halaman meta spesifik Anda.
sumber
check_ajax_referer
adalah tindakan, bukan filter. Anda seharusnya hanya didie()
sana untuk mengakhiri eksekusi skrip, bukan mengembalikan apa pun. Saya akan memperbaiki kode saya.Wordpress javascript mengidentifikasi metabox yang dapat diseret oleh judul h3 mereka dengan kelas "hndle". Ini cukup sederhana untuk menonaktifkannya secara khusus dengan mereferensikan metabox yang dimaksud (jika Anda membuat metabox khusus, Anda akan menetapkannya sebagai pengidentifikasi) dan menonaktifkan semua kelas hndle dengan menghapus nama kelas atau dengan menamai ulangnya. Dalam kasus saya, saya memiliki beberapa jenis pemisah yang saya beri label .hndle h3, tetapi tidak mungkin orang lain akan melakukan hal-hal seperti ini. Jadi, Anda dapat melakukan apa yang saya lakukan di bawah ini, atau Anda dapat menggunakan .find ('. Hndle'). Attr ('class', '') .... atau yang serupa. Ini akan masuk dalam file .js yang Anda enqueued di file functions.php Anda (apakah itu ada di folder tema atau folder plugin Anda). Enqueueing akan dipanggil oleh admin_print_scripts,
sumber
Saya juga akan menambahkan Javascript Hack ini:
... dan CSS ini:
Saya menggunakan kode itu untuk mengambil keuntungan dari kotak meta tetapi tanpa fungsi drag-and-drop dan buka / tutup.
sumber
.postbox:hover .handlediv { display:none; }
CSS untuk menyembunyikan .handledivSaya perhatikan pertanyaan ini masih belum terjawab, sejauh si penanya tidak memilih jawaban yang benar.
Jan memberikan contoh yang bermanfaat untuk menghentikan pemesanan ulang metabox yang diselamatkan atas Ajax, sementara yang lain memberikan saran terkait dengan JS.
Sejauh yang saya pahami, yang ingin Anda lakukan hanyalah menonaktifkan seret, tidak lebih. Untuk melakukan itu, Anda akan membutuhkan dua hal, pertama fungsi untuk mencegat tindakan penghematan ajax, tetapi kedua Anda juga harus menghentikan JS menyeret dan menjatuhkan tanpa mematikan fungsionalitas di tempat lain di halaman, sementara itu juga dilakukan secara selektif untuk tipe posting atau metabox tertentu.
Menggunakan fungsi Jans dan beberapa jQuery kita bisa melakukannya tanpa benar-benar mematikan fungsionalitas lain yang dibuat skrip kotak pos, seperti itu ..
Kode PHP untuk file fungsi tema atau file plugin
Batalkan komentar 1 pada baris yang sesuai untuk membuat enqueue bekerja.
jQuery / JS untuk file Javascript yang dirujuk di atas
Jquery yang sangat mendasar yang menghapus kelas sortir metabox dari elemen yang bisa diterapkan, ini mencegah penyeretan.
Seperti yang Anda lihat, saya telah menambahkan dalam 1 contoh jenis posting untuk menambahkan kode, pesan dalam hal ini. Namun Anda menyebutkan ingin juga memiliki kemungkinan menonaktifkannya untuk metabox tertentu.
Hal ini dapat dilakukan, hanya ada beberapa efek samping kecil salah satunya, yaitu dengan menghapus kelas dari metabox yang diberikan untuk mencegah menyeret, Anda juga mencegah fungsi sakelar bekerja (mis. Judul metabox judul fungsi sakelar).
Yang mengatakan, itu bisa dilakukan ...
Pertama, Anda akan memperbarui
disable_metabox_dragging
fungsi ke ..Sekali lagi, perhatikan Anda perlu menghapus komentar pada
wp_enqueue_script
baris yang berlaku .Array di dalam panggilan pelokalan adalah yang menentukan metabox mana yang harus dinonaktifkan, item kosong 0 yang sengaja ada karena fungsi skrip pelokalan menghapus setiap indeks 0 yang dikunci dalam array.
Kedua, file JS baru direferensikan dalam fungsi enqueue tweak di atas.
Satu-satunya hal yang perlu Anda lakukan adalah menentukan ID untuk metabox yang ingin Anda sembunyikan, dan meneruskannya ke dalam array yang menetapkan metabox yang dinonaktifkan (dalam
wp_localize_scipt
panggilan).Secara keseluruhan saya tidak berpikir metabox menonaktifkan selektif kekurangan, tidak ada dukungan untuk mengkonfigurasi ulang tindakan init sortable di WordPress, jadi menonaktifkan metabox menyortir berdasarkan elemen per elemen akan menjadi hacky terbaik (kode saya di atas adalah bukti itu). Idealnya, yang diperlukan di sini adalah tindakan di WordPress untuk mengaitkan init sortable, tetapi saat ini hardcoded ke javascript kotak pos (yang melakukan lebih dari sekedar pengaturan sortir).
Bagaimanapun, saya harap itu membantu menjawab pertanyaan awal.
sumber
Untuk menambah semua jawaban sebelumnya, jika Anda juga ingin mencegah WordPress dari memuat posisi kustom, berikut ini harus melakukan trik (ganti
post
dengan jenis posting apa pun):sumber
Baru saja menemukan cara yang sederhana, semoga pencari baru akan membantu dengan ini. Dengan asumsi Anda bisa menambahkan file css pada gaya admin enqueue, saya hanya menggunakan css untuk melakukan itu dan maaf untuk bahasa Inggris saya yang buruk.
Semoga ini bisa membantu.
sumber