这是我的功能:
public function save_meta( $term_id = 0, $taxonomy = '' ) {
$meta = ! empty( $_POST['banner'] ) ? $_POST['banner'] : '';
if ( empty( $meta ) ) {
delete_term_meta( $term_id, 'banner' );
} else {
update_term_meta( $term_id, 'banner', $meta );
}
}
当特拉维斯审查代码时,它告诉我 处理表单数据而不进行随机数验证。 | | (WordPress.CSRF.NonceVerification.NoNonceVerification)
我尝试了以下但是没有工作:
public function save_meta( $term_id = 0, $taxonomy = '' ) {
$meta = ! empty( $_POST['banner'] ) && wp_verify_nonce( sanitize_key( $_POST['banner'] ) ? $_POST['banner'] : '';
if ( empty( $meta ) ) {
delete_term_meta( $term_id, 'banner' );
} else {
update_term_meta( $term_id, 'banner', $meta );
}
}
我的代码出了什么问题?
答案 0 :(得分:0)
nonce是用户id,会话令牌,当前时间和函数wp_create_nonce()生成的标记的散列。此哈希用于验证请求不是conterfeit。在您的情况下,合适的标签将是' update-banner _' 。 $ term_id。您的HTTP请求应将此nonce作为查询或post参数返回。对于表单提交,通常使用表单中的隐藏字段来完成。 WordPress提供了方便函数wp_nonce_field()来执行此操作。然后,您的请求处理程序应使用函数wp_verify_nonce()或便捷函数check_admin_referer()来验证此随机数。有关调用这些函数的详细信息,请阅读WordPress文档。