ในตอนต้นของwp_insert_postฟังก์ชั่นที่ช่วยปรับปรุง / wp_insert_post_empty_contentโพสต์มีตัวกรองที่เรียกว่า ตามค่าเริ่มต้นตัวกรองนี้จะตรวจสอบว่าฟิลด์ชื่อตัวแก้ไขและข้อความที่ตัดตอนมาทั้งหมดว่างเปล่าหรือไม่ซึ่งในกรณีนี้กระบวนการบันทึกจะหยุดลง
อย่างไรก็ตามเนื่องจากฟิลด์ทั้งหมดที่จะบันทึกถูกส่งผ่านไปยังตัวกรองนี้คุณสามารถขยายตัวกรองนี้เพื่อรวมการทดสอบอื่น ๆ เพื่อพิจารณาว่าการโพสต์ควรจะถือว่าว่างเปล่าหรือไม่ มันจะเป็นอะไรเช่นนี้:
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;
}
หมายเหตุ: ฟังก์ชั่นจะต้องส่งกลับ 'true' เพื่อหยุดกระบวนการบันทึก
หากฟิลด์ที่กำหนดเองไม่ซ้ำกันคุณอาจต้องการสะท้อนคำเตือน
132_urlที่132เป็นรหัสการโพสต์ กว่าคุณจะมีคุณค่าที่นี่เสมอ นอกจากนั้นควรบันทึกฟิลด์ที่กำหนดเองในการsave_postดำเนินการ ในการดำเนินการนี้คุณสามารถตรวจสอบฟิลด์ที่กำหนดเอง (ถ้ามันไม่ว่างเปล่าและมีค่าที่ไม่ซ้ำกัน) และขึ้นอยู่กับสิ่งนี้update_post_metaหรือไม่ ผมคิดว่าคุณยังสามารถตรวจสอบข้อมูลที่กำหนดเองและถ้ามันไม่มีคุณค่าที่ไม่ซ้ำกันตั้งpost-statusไปdraftหรือสิ่งอื่นที่จะปิดการใช้งานการเผยแพร่ มิฉะนั้นฉันคิดว่าคุณต้องการ jQuery เพื่อทำสิ่งนี้