ฉันอยากจะแนะนำ
คุณทำ (และควร) มี nonce ของคุณเองเพื่อตรวจสอบที่มาของข้อมูลและเจตนาของผู้ใช้ ถ้าคุณมีเมท็อกซ์เพียงหนึ่งเดียว - จากนั้นคุณพบปัญหาถ้าเมตาโบวนั้นถูกลบออก หากนำเมตาอกซ์ที่สองออก (หรืออย่างน้อยควร) จะไม่บันทึกเนื่องจากไม่มีการส่งอีกต่อไป
แน่นอนจากจุดรักษาความปลอดภัยของมุมมองอะไรที่ถูกเพิ่มโดยขณะปัจจุบันที่สอง - ถ้าคุณเคยต้องการที่จะปรับปรุงเพียงหนึ่ง metabox และไม่อื่น ๆ : ขณะปัจจุบันควรจะไม่ซ้ำกับการกระทำ
แก้ไข
ตามที่กล่าวไว้มีเพียงรูปแบบเดียวสำหรับหน้าจอแก้ไขโพสต์ ดังนั้นในทางทฤษฎีคุณต้องการเพียงหนึ่งฟิลด์ที่ไม่มีข้อมูลที่จะตรวจสอบการกระทำและที่มาของข้อมูล อย่างไรก็ตามเนื่องจาก metaboxes สามารถลบได้ - โดยการมีเขตข้อมูล nonce ในหนึ่ง metabox เท่านั้นจึงไม่รับประกันว่าจะมี nonce โดยการวางเขตข้อมูล nonce ในแต่ละ metabox คุณสามารถตรวจสอบว่าข้อมูลจาก metabox นั้นถูกส่ง (และเป็นจริงจากที่คุณคิดว่ามันเป็น) ก่อนที่จะประมวลผลข้อมูลใด ๆ เช่น:
save_post_call_back($post_id){
//Check this is not an auto-save route
if(nonce of metabox1 present and valid){
//Process data from metabox1
}else{
//Either metabox removed - or invalid nonce. Take no action.
}
if(nonce of metabox2 present and valid){
//Process data from metabox2
}else{
//Either metabox removed - or invalid nonce. Take no action.
}
}
ชื่อของสนาม nonce ควรจะไม่ซ้ำกันเพื่อ metabox (และไม่ได้ปะทะกับขณะปัจจุบันอื่น ๆ ที่มีอยู่ในรูปแบบอื่น ๆ จากปลั๊กอิน)
ค่า nonce ควรไม่ซ้ำกับการกระทำ (และโดยทั่วไปควรรวมที่มาของข้อมูล (เช่นแก้ไขโพสต์เมื่อเทียบกับการแก้ไขอย่างรวดเร็ว)) ฉันมักจะรวมรหัสโพสต์ด้วย
<form>
แท็กเดียวในหน้าผู้ดูแลระบบ เขตข้อมูล nonce ควรไม่ซ้ำกับแบบฟอร์มหรือไม่ tia, @Stephen