در وردپرس، زمانی که میخواهید فایلهای خاصی را در کتابخانه رسانه آپلود کنید، با خطای «با عرض پوزش، این نوع پرونده به دلایل امنیتی مجاز نیست» مواجه می شوید. به طور مشابه، در ووکامرس نیز ممکن است هنگام آپلود یک فایل دانلودی ، با همین خطا مواجه شوید.
به طور پیش فرض وردپرس فقط اجازه می دهد فرمت های خاصی در سایت آپلود شوند. به عنوان مثال PNG، JPG، PDF، PPT، DOC، MP3 و MP4 در صف فایل های مجاز هستند – دلیل آن این است که این فرمت ها “ایمن” هستند و حاوی کد مخربی نیستند که در وردپرس مشکلی ایجاد کنند.
مسئله اینجاست من قصد فروش یک محصول قابل دانلود را دارم و باید یک فایل ZIP (افزونه)، یک فایل JSON (یک فایل صادراتی قطعه کد برای کسانی که افزونه ها را دوست ندارند) و یک فایل TXT (کد خام افزونه برای کسانی که دوست دارند با PHP بازی کنند) را برای کاربران ارائه دهم. همه چیز برای آپلود فایل ZIP به خوبی پیش رفت، اما به محض اینکه سعی کردم فایل های JSON و TXT را آپلود کنم، خطای «متاسفم، این نوع فایل به دلایل امنیتی مجاز نیست» دریافت کردم.
بسیار خب! راه حل برطرف کردن این محدودیت ، تغییر این رفتار پیشفرض وردپرس است.بنابراین، به فیلتر «upload_mimes» سلام کنید، که به ما این امکان را می دهد تا این مشکل را حل کنیم.🙂 با سرزمین آنلاین برای رفع این خطا همراه باشید.
برای این کار باید کد زیر به فایل Functions.php قالب خود اضافه کنید.
add_filter( 'upload_mimes', 'mweb_custom_mime_types' ); function mweb_custom_mime_types( $mimes ) { if ( current_user_can( 'manage_woocommerce' ) ) { $mimes['txt'] = 'text/plain'; $mimes['json'] = 'text/plain'; } return $mimes; } add_filter( 'wp_check_filetype_and_ext', 'mweb_correct_filetypes', 10, 5 ); function mweb_correct_filetypes( $data, $file, $filename, $mimes, $real_mime ) { if ( ! empty( $data['ext'] ) && ! empty( $data['type'] ) ) { return $data; } $wp_file_type = wp_check_filetype( $filename, $mimes ); if ( 'json' === $wp_file_type['ext'] ) { $data['ext'] = 'json'; $data['type'] = 'text/plain'; } elseif ( 'txt' === $wp_file_type['ext'] ) { $data['ext'] = 'txt'; $data['type'] = 'text/plain'; } return $data; }