我想在编辑配置文件(wp admin)期间对图像进行验证。
我的验证代码是:
add_action( \'user_profile_update_errors\', \'validate_steamid_field\' , 10, 3);
function validate_steamid_field(&$validation_errors, $update = null, &$user = null){
if ( isset( $_FILES[\'custom_avatar\'] ) && !empty($_FILES[\'custom_avatar\']) && file_exists($_FILES[\'custom_avatar\'][\'tmp_name\']) ) {
$allowed_image_extension = array(
"png",
"jpg",
"jpeg"
);
$file_extension = substr($_FILES[\'custom_avatar\']["name"], strrpos($_FILES[\'custom_avatar\']["name"], \'.\') + 1);
if (! in_array(strtolower($file_extension), $allowed_image_extension)) {
$_FILES[\'custom_avatar\'] == \'\';
$validation_errors->add( \'error\', \'wrong format image\');
}
$fileinfo = @getimagesize($_FILES["custom_avatar"]["tmp_name"]);
$width = $fileinfo[0];
$height = $fileinfo[1];
if($width < "450" || $height < "450"){
$_FILES[\'custom_avatar\'] == \'\';
$validation_errors->add( \'error\', \'image is too small\');
}
}
return $validation_errors;
}
代码运行良好,直到我添加以下代码以保存值时为止: function save_custom_avatar_field( $user_id ) {
if ( current_user_can( \'edit_user\', $user_id ) ) {
if ( isset( $_FILES[\'custom_avatar\'] ) && !empty($_FILES[\'custom_avatar\']) ) {
update_user_meta($user_id,\'custom_avatar\', $_FILES[\'custom_avatar\'][\'name\']);
}
}
}
add_action( \'personal_options_update\', \'save_custom_avatar_field\' );
add_action( \'edit_user_profile_update\', \'save_custom_avatar_field\' );
The problem is that even the file is wrong format (validation not passed) the field is updated.
有人能帮我吗?提前谢谢你。