답변:
그렇게 추천합니다.
데이터의 출처와 사용자의 의도를 확인할 수있는 자신의 nonce가 있어야합니다. 메타 박스에 하나의 nonce 만있는 경우 해당 메타 박스가 제거되면 (숨겨진 것과 동일하지 않은) 문제가 발생합니다. nonce가 더 이상 전송되므로 두 번째 metabox를 제거하면 저장하지 않거나 최소한 저장해야합니다.
물론 보안 관점에서, 하나의 메타 박스 만 업데이트하고 다른 메타 박스는 업데이트하지 않으려는 경우를 제외하고는 두 번째 nonce가 추가되지 않습니다. nonces는 작업에 고유해야합니다 .
지적했듯이 포스트 편집 화면에는 하나의 양식 만 있습니다. 따라서 이론 상으로는 데이터의 동작과 출처를 확인하는 하나의 nonce 필드 만 있으면됩니다. 그러나 메타 박스는 하나의 메타 박스에만 nonce 필드를 사용하여 제거 할 수 있으므로 nonce가있을 것이라는 보장은 없습니다. 각 메타 박스에 nonce 필드를 배치하면 데이터를 처리하기 전에 해당 메타 박스의 데이터가 전송되었는지 (실제로 생각했던 위치에서) 있는지 확인할 수 있습니다. 예 :
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 필드 의 이름 은 메타 박스에 고유해야하며 다른 플러그인의 양식에있는 다른 nonces와 충돌하지 않아야합니다.
nonce 값 은 작업에 고유해야합니다 (일반적으로 데이터의 출처를 포함해야합니다 (예 : 빠른 편집이 아닌 편집 게시)). 나는 일반적으로 게시물 ID도 포함합니다.
save_post
동작을 트리거하기 때문에 ).
save_post
다양한 컨텍스트에서 호출 될 수 있으므로 nonce는 보장되지 않습니다. 또한 콜백이 실제로 무언가를 해야하는지 확인하는 편리한 방법입니다. nonces를 여러 개 추가 할 때는 고유 한 이름을 사용하십시오. 작동합니다.
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 필드는 양식의 내용이 다른 곳이 아닌 현재 사이트의 위치에서 온 것임을 확인하는 데 사용됩니다.
양식당 하나의 nonce 필드 만 있으면됩니다.이 필드는 나에게 의미가 없습니다.
check_admin_referer () 를 조사하고 사용 하여 요청이 관리자 페이지에서 온 것인지 확인할 수 있습니다.
WP 3.5.2에서 전체 편집 페이지는 폼 태그로 싸여 있으므로 자신의 폼 태그를 추가해서는 안됩니다 !! 여전히 그렇게하고 다른 별도의 사용자 정의 메타 상자를 추가하려고하면 저장 할 때 실패하고 저장하려고 할 때 wp-admin 홈으로 연결됩니다!
또한 양식 당 하나만 있어야하므로 NONCE 필드를 추가하지 마십시오 (이로 인해 실패 할 수도 있습니다!). 페이지 편집에는 이미 nonce 필드가 있습니다!
정답 작성자가 인정한대로 전체 편집 화면에 하나의 양식 태그 만 있기 때문에 2) 자동으로 nonce가 추가됩니다. 왜 더 추가해야합니까? 그것은 무엇이든 항상 nonce를 가질 것입니다 ...
의도는 편집에 내보기 콘텐츠 또는 메타 데이터에 의해 페이지입니다 예. 하나의 nonce 필드 ... 또한 더 추가하려고 할 때 여러 메타 상자 에서도 작동하지 않습니다 !! 하나는 작동하고 다른 하나는 실패하고 사용자를 wp-admin 홈으로 리디렉션합니다!
<form>
관리 페이지에는 하나의 태그 만 있습니다. nonce 필드는 양식에 고유해야합니까? tia, @Stephen