Saya ingin menonaktifkan ini hanya untuk satu Jenis Posting, karena tidak terlalu penting jika ada pengguna lain yang mengeditnya (area pengeditan konten utama adalah Ajaxified dan non-admin hanya dapat melihatnya).
Saya melihat fungsi inti tetapi tidak dapat menemukan titik masuk. Dari fungsi wp_set_post_lock
saya menduga bahwa saya harus mencegat get_post_meta
, tetapi apakah ada cara resmi untuk melakukannya?
Dan ada kunci kedua yang tampaknya tidak terpengaruh oleh filter wp_check_post_lock_window
( seperti yang ditunjukkan oleh birgire , di sini dalam Jawaban). Saya sudah mencoba remove_filter( 'heartbeat_received', 'wp_refresh_post_lock', 10, 3 );
di berbagai titik tetapi terus berdetak tanpa rasa hormat remove_filter
.
wp-admin
heartbeat-api
brasofilo
sumber
sumber
post_lock
tetap.Jawaban:
Sebagai tambahan untuk jawaban @birgire ...
Temuan
register_post_type()
memungkinkan untuk mendaftarkan dukungan tipe posting, yang juga dapat dilakukan kemudian saat menggunakanadd_post_type_support()
. Dan itu bisa diperiksa melawan bahkan menggunakan semua perkasapost_type_supports( $cpt, $feat )
.Plugin mini umum yang menambahkan fitur baru
Sekarang plugin (mu-) berikut memeriksa jenis baru jenis dukungan pos yang menonaktifkan fitur kunci posting. Itu namanya
disabled_post_lock
.Satu plugin per CPT
Kemudian kita dapat dengan mudah menambahkan plugin mini untuk menonaktifkan dukungan tipe posting untuk plugin kita sendiri atau pihak ketiga (menghemat kita beberapa bandwidth dan ukuran DB dalam tabel meta pengguna):
Segera setelah plugin kedua diaktifkan, jenis kiriman bir kami tidak lagi memiliki kunci kiriman. Ini seharusnya bekerja dengan baik dan mudah dikembalikan melalui layar admin plugins.
Menonaktifkan API detak jantung
Memperluas plugin untuk menonaktifkan API beatbeat juga:
sumber
admin-ajax.php
bagian tersebut (Q diperbarui dan A ditambahkan)?wp.heartbeat.start();
JavaScript Anda.post_type_supports
untuk menangani ini untuk setiap jenis posting kustom, saya berharap saya bisa memberi Anda lebih banyak upvotes ;-)Untuk menghapus jendela sembulan edit-kunci , Anda dapat mencoba:
Saya tidak yakin apakah ini jalan yang harus ditempuh, tetapi saya memeriksa sumbernya
wp_check_post_lock()
dan di sana kami memiliki baris-baris ini:jadi idenya adalah untuk mengubah
$time_window
sehinggaif
kondisi inifalse
.Memperbarui:
Untuk menerapkan ini di
edit.php
layar, dengan jenis pos khususbeer
misalnya:Dan kemudian kita dapat menambahkan:
untuk menghapusnya untuk
post.php
layar juga.Lebih banyak menggali ...
Fungsi
_admin_notice_post_locked()
ini didefinisikan tepat di bawahwp_set_post_lock()
fungsi. Ini berisi garis-garis ini:jadi kita juga dapat mencoba
show_post_locked_dialog
filter:sumber
__return_false()
sebagai cek pertama untuk$time
hanya meringkas sebagaibool TRUE
?$time
untukfalse
jadi aku pergi untuk$time_window
sebaliknya ...Kombinasi terakhir yang saya gunakan berakhir adalah
tetapi jika ada yang punya pandangan lain, saya ingin sekali mendengarnya, karena saya tidak begitu memahami seluruh gambar filter yang tersedia.
sumber
get_current_screen()->post_type
sebagai gantinya. Berikut ini adalah plugin yang bagus yang disebut Info Admin Saat Ini untuk membantu Anda mengambil informasi tersebut.DOING_AJAX
cek ... Dan seperti yang saya pahami, Ajax tidak memilikiglobal $current_screen
(dikembalikan olehget_current_screen()
).wp_is_autosave()
- tidak yakin apakah itu bertanggung jawab atas tindakan tersebut.add_filter( 'show_post_locked_dialog', '__return_false' );
, dari fungsinya_admin_notice_post_locked()
, apakah ada bantuan?wp_ajax_heartbeat()
(wp-admin / include / ajax-action.php) menggunakan rantaiload-$hook
->get_current_something()
. . . . . Juga, ada 3 kait dalam fungsi itu, tapi saya tidak bisa menghentikan ketukan menggunakan mereka (dan mereka punya$screen_id
, yang cocok dengan jenis posting.Inilah solusi terakhir yang cocok untuk saya. :
sumber