Ich würde es empfehlen.
Sie haben (und sollten) eine eigene Instanz, mit der Sie die Herkunft der Daten und die Absicht des Benutzers überprüfen können. Wenn Sie nur eine einzige Nonce für eine Metabox haben, treten Probleme auf, wenn diese Metabox entfernt wird (nicht dasselbe wie versteckt). Wenn entfernt, wird (oder sollte) die zweite Metabox niemals speichern, da die Nonce länger gesendet wird.
Aus Sicherheitsgründen wird durch eine zweite Nonce natürlich nichts hinzugefügt - es sei denn, Sie möchten jemals nur eine Metabox und nicht die andere aktualisieren : Nonces sollten für die Aktion eindeutig sein .
Bearbeiten
Wie bereits erwähnt, gibt es nur ein Formular für den Nachbearbeitungsbildschirm. Theoretisch benötigen Sie also nur ein Nonce-Feld, mit dem Sie die Aktion und den Ursprung der Daten validieren können. Da Metaboxen jedoch entfernt werden können - wenn nur in einer Metabox ein Nonce-Feld vorhanden ist, kann nicht garantiert werden, dass die Nonce vorhanden ist. Durch Platzieren eines Nonce-Felds in jeder Metabox können Sie überprüfen, ob Daten von dieser Metabox gesendet wurden (und woher sie stammen), bevor Sie Daten verarbeiten. Z.B:
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.
}
}
Der Name des Nonce-Felds sollte für die Metabox eindeutig sein (und nicht mit anderen Nonces in Konflikt stehen, die in dem Formular von anderen Plug-Ins vorhanden sind).
Der Nonce- Wert sollte für die Aktion eindeutig sein (und dies sollte im Allgemeinen die Herkunft der Daten einschließen (z. B. "Beitrag bearbeiten" im Gegensatz zu "Schnellbearbeitung"). Ich gebe in der Regel auch die Post-ID an.
<form>
Auf der Admin-Seite befindet sich jedoch nur ein Tag. Sollte das Nonce-Feld für das Formular eindeutig sein oder nicht? tia, @Stephen