How to force field validation first, then its values saved durning edit profile?
Question
I want to make validation of image during edit profile (wp-admin).
My code for validation is:
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;
}
The code works well till moment I add the following code for save the value:
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.
Could somone help me with it? Thank you in advance.
0
functions, profiles, validation, wp-admin
3 years
2020-04-01T12:52:44-05:00
2020-04-01T12:52:44-05:00 0 Answers
79 views
0
Leave an answer