Or, embed this snippet using GenerateWP WordPress Plugin.

Download

Clone

Image Upload Function

This function makes users easily upload images, error message, define limits, and mandatory.

//       Upload image function... use it to uload image. You can add size, error message, if its required or not. Follow me on instagram : adhsagar
function BRKT_upload_image($file_name, $upload_name, $no_photo_error_message, $mandatory = false, $size = 1100000)
{
    require_once(ABSPATH . 'wp-admin/includes/image.php');
    require_once(ABSPATH . 'wp-admin/includes/file.php');
    require_once(ABSPATH . 'wp-admin/includes/media.php');
    
    $fileinfo = @getimagesize($_FILES["file-input"]["tmp_name"]);
    if (($mandatory == false) && ($fileinfo == false)) {
        return false;
    } else {

        $upload_file_name = $_FILES[$file_name]["name"];

        $allowed_image_extension = array(
            "PNG",
            "png",
            "jpg",
            "JPG",
            "jpeg",
            "JPEG",
        );

        // Get image file extension
        $file_extension = pathinfo($_FILES[$file_name]["name"], PATHINFO_EXTENSION);

        // Validate file input to check if is not empty
        if (!file_exists($_FILES[$file_name]["tmp_name"])) {
            $response = array(
                "error" => true,
                "message" => $no_photo_error_message
            );
        }    // Validate file input to check if is with valid extension
        else if (!in_array($file_extension, $allowed_image_extension)) {
            $response = array(
                "error" => true,
                "file_name" => $_FILES[$file_name]["name"],
                "message" => "Upload valid $file_name,  $upload_file_name is in wrong format. Only PNG and JPEG are allowed."
            );
//        echo $result;
        }    // Validate image file size
        else if (($_FILES[$file_name]["size"] > $size)) {
            $response = array(
                "error" => true,
                "file_name" => $_FILES[$file_name]["name"],
                "message" => "$upload_file_name exceeds 1MB"
            );
        }    // Validate image file dimension
        else {
            $temp = explode(".", $_FILES[$file_name]["name"]);
            $newfilename = $upload_name . '-' . round(microtime(true)) . '.' . end($temp);

            $files = $_FILES[$file_name];
            if ($files['name']) {
                $file = array(
//                    'name' => $files['name'],
                    'name' => $newfilename,
                    'type' => $files['type'],
                    'tmp_name' => $files['tmp_name'],
                    'error' => $files['error'],
                    'size' => $files['size']
                );
                $file_info = array($file_name => $file);
                foreach ($file_info as $file => $array) {
                    $attach_id = media_handle_upload($file, 0, $file_info);
                    $file_url = wp_get_attachment_url($attach_id);
                }
            }
            $response = array(
                "error" => false,
                "image_url" => $file_url,
            );

        }
        return $response;
    }

}