Di awal wp_insert_post
, fungsi yang menyimpan / memperbarui posting, ada filter yang disebut wp_insert_post_empty_content
. Secara default filter ini memeriksa apakah judul, editor, dan bidang kutipan semuanya kosong, dalam hal ini proses penyimpanan akan dihentikan.
Namun, karena semua bidang yang akan disimpan diteruskan ke filter ini, Anda dapat memperluas filter ini untuk memasukkan tes lain untuk menentukan apakah posting harus dianggap kosong. Itu akan menjadi seperti ini:
add_filter ('wp_insert_post_empty_content','wpse312975_check_unique_url',10,2);
function wpse312975_check_unique_url ($maybe_empty, $postarr) {
// extract custom field from $postarr, check uniqueness
if ($unique) return false else return true;
}
Catatan: fungsi harus mengembalikan 'true' untuk menghentikan proses penyimpanan.
Jika bidang khusus tidak unik, Anda mungkin juga ingin mengulangi peringatan.
132_url
mana132
ID pos. Daripada Anda selalu memiliki nilai unik di sini. Selain itu: Bidang khusus harus disimpan dalamsave_post
tindakan. Dalam tindakan ini Anda dapat memeriksa bidang khusus (jika tidak kosong dan memiliki nilai unik misalnya), dan berdasarkan iniupdate_post_meta
atau tidak. Saya kira Anda juga bisa memeriksa bidang khusus dan jika tidak memiliki nilai unik, setelpost-status
kedraft
atau yang lainnya, untuk menonaktifkan penerbitan. Kalau tidak, saya pikir Anda perlu jQuery untuk melakukan ini.