رفع خطای : “متاسفانه، این نوع فایل به دلایل امنیتی مجاز نیست” برای محصولات قابل دانلود

در وردپرس، زمانی که می‌خواهید فایل‌های خاصی را در کتابخانه رسانه آپلود کنید، با خطای «با عرض پوزش، این نوع پرونده به دلایل امنیتی مجاز نیست» مواجه می شوید. به طور مشابه، در ووکامرس نیز ممکن است هنگام آپلود یک فایل دانلودی ، با همین خطا مواجه شوید.

به طور پیش فرض وردپرس فقط اجازه می دهد فرمت های خاصی در سایت آپلود شوند. به عنوان مثال PNG، JPG، PDF، PPT، DOC، MP3 و MP4 در صف فایل های مجاز هستند – دلیل آن این است که این فرمت ها “ایمن” هستند و حاوی کد مخربی نیستند که در وردپرس مشکلی ایجاد کنند.

 

 

مسئله اینجاست من قصد فروش یک محصول قابل دانلود را دارم و باید یک فایل ZIP (افزونه)، یک فایل JSON (یک فایل صادراتی قطعه کد برای کسانی که افزونه ها را دوست ندارند) و یک فایل TXT (کد خام افزونه برای کسانی که دوست دارند با PHP بازی کنند) را برای کاربران ارائه دهم. همه چیز برای آپلود فایل ZIP به خوبی پیش رفت، اما به محض اینکه سعی کردم فایل های JSON و TXT را آپلود کنم، خطای «متاسفم، این نوع فایل به دلایل امنیتی مجاز نیست» دریافت کردم.

بسیار خب! راه حل برطرف کردن این محدودیت  تغییر این رفتار پیش‌فرض وردپرس است.بنابراین، به فیلتر «upload_mimes» سلام کنید، که به ما این امکان را می دهد تا این مشکل را حل کنیم.🙂

 

برای این کار باید کد زیر به فایل Functions.php قالب خود اضافه کنید.

نکته : کاربرانی که از محصولات ماهدیس وب استفاده می کنند، باید این کد را به انتهای فایل myfunctions اضافه کنند.

 



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;
}


 

 

 

بیشتر بخوانید : مرتب سازی محصولات براساس موجودی در پیشخوان وردپرس

 

 

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

کد امنیتی Time limit is exhausted. Please reload CAPTCHA.