Tôi muốn giới thiệu như vậy.
Bạn có (và nên) có thông tin riêng để kiểm tra nguồn gốc của dữ liệu và mục đích của người dùng. Nếu bạn chỉ có một lần mở cho metabox - thì bạn sẽ gặp vấn đề nếu metabox đó bị xóa (không giống như ẩn). Nếu loại bỏ metabox thứ hai, (hoặc ít nhất nên) sẽ không bao giờ lưu vì nonce được gửi lâu hơn.
Tất nhiên, từ quan điểm bảo mật, không có gì được thêm vào bởi một nonce thứ hai - trừ khi bạn chỉ muốn cập nhật một metabox chứ không phải là khác: nonces nên là duy nhất cho hành động .
Biên tập
Như chỉ ra rằng chỉ có một hình thức cho màn hình chỉnh sửa bài. Vì vậy, về mặt lý thuyết, bạn chỉ cần một trường nonce để xác thực hành động và nguồn gốc của dữ liệu. Tuy nhiên, vì metaboxes có thể được loại bỏ - bằng cách có một trường nonce chỉ trong một metabox, không có gì đảm bảo rằng nonce sẽ ở đó. Bằng cách đặt một trường nonce trong mỗi metabox, bạn có thể kiểm tra xem dữ liệu từ metabox đó đã được gửi chưa (và thực tế là từ nơi bạn nghĩ là nó) trước khi xử lý bất kỳ dữ liệu nào. Ví dụ:
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.
}
}
Các tên của trường nonce phải là duy nhất đến Metabox (và không xung đột với bất kỳ nonces khác có mặt trên các hình thức từ các plug-in khác).
Giá trị nonce phải là duy nhất cho hành động (và điều này thường bao gồm nguồn gốc của dữ liệu (ví dụ: bài đăng chỉnh sửa thay vì chỉnh sửa nhanh)). Tôi thường bao gồm ID bài viết quá.
<form>
thẻ trên trang quản trị. trường nonce có phải là duy nhất cho hình thức hay không? tia, @Stephen