Jadi saya memiliki metabox yang saya ingin memicu beberapa Javascript ketika sebuah posting disimpan (untuk menyegarkan halaman dalam use case ini.)
Di Editor Klasik, ini dapat dilakukan melalui pengalihan sederhana ke save_post
(dengan prioritas tinggi)
Tetapi karena Gutenberg mengubah proses penyimpanan untuk metabox yang ada menjadi panggilan AJAX sekarang, itu perlu javascript, jadi bagaimana caranya:
Dengarkan acara di mana semua proses penyimpanan selesai dan kemudian memicu javascript? Jika demikian, apa sebutan acara ini? Apakah ada referensi untuk acara ini di mana saja? ATAU
Memicu javascript di dalam proses penyimpanan AJAX metabox, yang kemudian dapat memeriksa status proses penyimpanan halaman induk sebelum melanjutkan?
javascript
metabox
block-editor
majik
sumber
sumber
wp.data
penyimpanan datawp.data.select('core/editor').isSavingPost()
... jenis akses ini tidak didokumentasikan di mana pun saya bisa melihat ... dan tampaknya juga tidak dapat diandalkan karena kembalifalse
setelah posting pertama kali disimpan (sebelum itu tidak ditentukan) apakah editor masih menyimpan atau tidak. facepalmJawaban:
Tidak yakin apakah ada cara yang lebih baik, tapi saya mendengarkan
subscribe
daripada menambahkan pendengar acara ke tombol:Dokumen resmi dari data Editor Pos: https://wordpress.org/gutenberg/handbook/designers-developers/developers/data/data-core-editor/
sumber
subscribe
metode itu berasal? apakah itu bagian dariwp.data
fungsi? Saya tidak melihatnya disebutkan dalam dokumen.subscribe
adalah metode modul wp.data . Buka konsol saat mengedit posting dengan Gutenberg dan jalankanwp.data
. Ini mencantumkan semua metode modul data yang tersedia.wp.data
model. itu kembali ke PHP (dan editor klasik) untuk saya.Oke, jadi solusi hacking jauh lebih daripada yang saya inginkan, tetapi berhasil ...
Ini adalah cara yang sedikit disederhanakan dan abstrak untuk melakukannya dari kode saya, kalau-kalau ada yang perlu melakukan hal yang sama (karena saya yakin akan ada lebih banyak plugin dalam waktu dekat.)
... hanya perlu berubah
metabox_input_id
dantrigger_value
cocok sesuai kebutuhan. :-)sumber
Anda perlu mengumpulkan fungsi berhenti berlangganan dari berlangganan dan menelepon untuk menghindari panggilan berlipat kali.
sumber