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
, , , Tereska 3 years 2020-04-01T12:52:44-05:00 0 Answers 79 views 0

Leave an answer

Browse
Browse