我目前正在处理自定义帖子类型的管理页面,我一直在决定是否为第二个元数据库再次添加nonce字段。我对自定义帖子类型非常陌生,在网上搜索并不会得到那么多结果。
有什么想法吗?谢谢
我目前正在处理自定义帖子类型的管理页面,我一直在决定是否为第二个元数据库再次添加nonce字段。我对自定义帖子类型非常陌生,在网上搜索并不会得到那么多结果。
有什么想法吗?谢谢
我建议这样做。
您确实(而且应该)有自己的nonce来检查数据的来源和用户的意图。如果一个元盒只有一个nonce,那么如果删除该元盒(与隐藏不同),就会遇到问题。如果删除了第二个元盒,则将(或至少应该)永远不会保存,因为nonce的发送时间更长。
当然,从安全的角度来看,第二个nonce不会添加任何内容,除非您希望只更新一个metabox而不更新另一个:nonces should be unique to the action.
如前所述,编辑后屏幕只有一个表单。因此,理论上,您只需要一个nonce字段来验证操作和数据的来源。然而,由于可以删除元盒-通过在一个元盒中只有一个nonce字段,无法保证nonce会存在。通过在每个元数据库中放置一个nonce字段,您可以在处理任何数据之前检查该元数据库中的数据是否已发送(实际上是从您认为的位置发送的)。E、 g:
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.
}
}
Thename nonce字段的值应该是metabox唯一的(并且不会与表单上其他插件中的任何其他nonce冲突)。暂时的value 应为操作所独有(通常应包括数据的来源(例如,编辑帖子而不是快速编辑))。我通常也包括帖子ID。
您还可以将nonce字段添加到从不消失的提交框中
add_action( \'post_submitbox_start\', \'theme_submitdiv_extra\' );
function theme_submitdiv_extra()
{
wp_nonce_field( \'theme_meta_box_nonce\', \'meta_box_nonce\' );
}
然后,在save\\u post操作中:if( !isset( $_POST[\'meta_box_nonce\'] ) || !wp_verify_nonce( $_POST[\'meta_box_nonce\'], \'theme_meta_box_nonce\' ) ) return;
nonce字段用于验证表单的内容是否来自当前站点上的位置,而不是其他位置。
只有one nonce field per form 是必需的,多用一个对我来说没有意义。也许你可以调查并使用check_admin_referer() 确保您的请求来自管理页面
在WP 3.5.2中,整个编辑页面被包装在一个表单标签中,因此您不应该添加自己的表单标签!!如果仍然这样做,并尝试添加另一个单独的自定义元框,它将在保存时失败,并且仅在尝试保存时引导您到wp admin home!!
另外,也不要添加NONCE字段,因为每个表单只能有一个字段(这也可能会导致它失败!!)并且页面编辑已经有一个nonce字段!
这个intent is in my view to edit the page by content or meta data 例如,一个nonce字段。。。而且,当我尝试添加更多内容时,它甚至无法与multiple meta-boxes!! 一个会工作,另一个会失败,只会将用户重定向到wp admin home!
我正在使用class My Metabox class*-- Custom Post Init Begin --*/ function mypost_types(){ register_post_type(\'video\', array( $labels = array( \'name\' => __( \'video\' ), singular_name