回答:
お勧めします。
データの出所とユーザーの意図を確認するための独自のナンスを持っています(そして持っているべきです)。メタボックスのナンスが1つだけの場合、そのメタボックスが削除されると問題が発生します(非表示と同じではありません)。削除された場合、2番目のメタボックスは、nonceがより長く送信されるため、保存されません(または少なくとも保存されるはずです)。
セキュリティの観点から、もちろん、何も二ナンスによって追加されていない-あなたが唯一の他の1 metaboxを更新しないことを望む場合を除き:ナンスがアクションに固有でなければなりません。
指摘したように、投稿編集画面にはフォームが1つしかありません。したがって、理論的には、アクションとデータの出所を検証するために必要なノンスフィールドは1つだけです。ただし、メタボックスは削除できるため、1つのメタボックスのみにナンスフィールドを含めることにより、ナンスが存在するという保証はありません。各メタボックスにノンスフィールドを配置することにより、データを処理する前に、そのメタボックスからのデータが送信されているかどうかを確認できます。例えば:
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フィールドの名前は、メタボックスに対して一意である必要があります(他のプラグインからフォームに存在する他のnonceと衝突しないようにします)。
ナンス値はアクションに固有である必要があります(また、これには通常、データの起源が含まれている必要があります(クイック編集ではなく編集ポストなど)。私は通常、投稿IDも含めます。
save_post
アクションをトリガーするため)。
save_post
さまざまなコンテキストから呼び出すことができるため、ナンスは保証されません。また、コールバックが実際に何かをしなければならないことを確認する便利な方法です。複数のナンスを追加する場合は、一意の名前を使用してください。動作します。
また、nonceフィールドを追加して消えない送信ボックスをフックすることもできます
add_action( 'post_submitbox_start', 'theme_submitdiv_extra' );
function theme_submitdiv_extra()
{
wp_nonce_field( 'theme_meta_box_nonce', 'meta_box_nonce' );
}
次に、save_postアクションで:
if( !isset( $_POST['meta_box_nonce'] ) || !wp_verify_nonce( $_POST['meta_box_nonce'], 'theme_meta_box_nonce' ) ) return;
nonceフィールドは、フォームのコンテンツが現在のサイトの場所からであり、他の場所からではないことを検証するために使用されます。
フォームごとに必要なノンスフィールドは1つだけです。複数のフィールドを使用してください。
たぶん、check_admin_referer()を調べて使用して、リクエストが管理ページからのものであることを確認できます
WP 3.5.2では、編集ページ全体がフォームタグでラップされているため、独自のフォームタグを追加しないでください。それでもそれを行って別のカスタムメタボックスを追加しようとすると、保存時に失敗し、保存しようとするとwp-adminホームに移動するだけです!!
また、フォームごとに1つしか存在しないため、NONCEフィールドも追加しないでください(これにより、失敗する可能性もあります!!)。また、ページ編集には既にnonceフィールドがあります。
問題は、1)正解の作成者が認めたように、編集画面全体に対してFormタグが1つしかないためです。2)ノンスが自動的に追加されます。なぜさらに追加する必要があるのですか?それは何であれ常にナンスを持ちます...
その意図は、編集に私の見解では、コンテンツやメタデータによってページです例えば。1つのnonceフィールド...さらに追加しようとしたときに、複数のメタボックスでも機能しません!! 1つは動作し、もう1つは失敗し、ユーザーをwp-adminホームにリダイレクトするだけです!
<form>
、管理ページにはタグが1つしかありません。ナンスフィールドはフォームに一意であるかどうか tia、@ Stephen