wordpress plugin file upload and email form code example
Example: how to upload file in wordpress
class WLSM_Helper {
public static function get_attachment_mime() {
return array('image/jpg', 'image/jpeg', 'image/png', 'application/pdf', 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/x-rar-compressed', 'application/octet-stream', 'application/zip', 'application/octet-stream', 'application/x-zip-compressed', 'multipart/x-zip', 'video/x-flv', 'video/mp4', 'application/x-mpegURL', 'video/MP2T', 'video/3gpp', 'video/quicktime', 'video/x-msvideo', 'video/x-ms-wmv');
}
public static function is_valid_file( $file, $type = 'attachment' ) {
$get_mime = 'get_' . $type . '_mime';
if ( extension_loaded( 'fileinfo' ) ) {
$finfo = finfo_open( FILEINFO_MIME_TYPE );
$mime = finfo_file( $finfo, $file['tmp_name'] );
finfo_close( $finfo );
} else {
$mime = $file['type'];
}
if ( ! in_array( $mime, self::$get_mime() ) ) {
return false;
}
return true;
}
}
$attachment = (isset($_FILES['attachment']) && is_array($_FILES['attachment'])) ? $_FILES['attachment'] : NULL;
if (isset($attachment['tmp_name']) && !empty($attachment['tmp_name'])) {
if (!WLSM_Helper::is_valid_file($attachment, 'attachment')) {
$errors['attachment'] = esc_html__('This file type is not allowed.', 'school-management');
}
}
$attachment = media_handle_upload('attachment', 0);
if (is_wp_error($attachment)) {
throw new Exception($attachment->get_error_message());
}
$data['attachment'] = $attachment;