آموزش افزودن فرمت فایل جدید به وردپرس ( WEBP, AVIF, SVG, WOFF, WOFF2 )

آموزش افزودن فرمت‌های فایل جدید به وردپرس (WEBP، WOFF2، SVG، AVIF و سایر فرمت‌های پرکاربرد)

آیا تا به حال هنگام آپلود یک فایل WEBP، WOFF2، SVG یا هر فرمت دیگری که وردپرس به‌طور پیش‌فرض پشتیبانی نمی‌کند، با پیام “Sorry, this file type is not permitted for security reasons” مواجه شده‌اید؟ وردپرس به دلایل امنیتی تنها مجموعه‌ای محدود از فرمت‌های فایل را برای آپلود در کتابخانه رسانه مجاز می‌داند. این محدودیت شامل فرمت‌های مدرنی مانند WEBP (تصویر با کیفیت بالا و حجم کم)، WOFF2 (فرمت فونت تحت وب)، SVG (گرافیک برداری برای آیکون‌ها و لوگوها) و AVIF (فرمت تصویر نسل جدید) نیز می‌شود که امروزه به‌طور گسترده در طراحی سایت‌ها استفاده می‌شوند. در این مقاله از مجموعه مقالات آموزشی وردپرس، دو روش برای رفع محدودیت آپلود فرمت‌های فایل در وردپرس آموزش داده می‌شود: روش سریع اما پرخطر و روش امن و استاندارد. با اضافه کردن فرمت‌های مناسب، می‌توانید سئوی سایت خود را با استفاده از تصاویر سبک‌تر و مدرن‌تر بهبود بخشید و سرعت بارگذاری را افزایش دهید.

چرا وردپرس برخی فرمت‌ها را مسدود می‌کند و چرا باید آن را باز کنیم؟

سیاست محدود کردن فرمت‌های فایل در وردپرس یک اقدام امنیتی هوشمندانه است. فرمت‌هایی مانند .php، .exe یا حتی .svg می‌توانند حاوی کدهای مخرب باشند و در صورت آپلود در سرور، امنیت سایت را به خطر بیندازند. به همین دلیل، وردپرس فقط فرمت‌های امن مانند .jpg، .png، .pdf و تعدادی دیگر را به‌طور پیش‌فرض مجاز می‌داند. وردپرس به‌طور پیش‌فرض از فرمت‌های زیر پشتیبانی می‌کند: تصاویر (.jpg، .jpeg، .png، .gif، .ico)، اسناد (.pdf، .doc، .docx، .ppt، .pptx، .pps، .ppsx، .odt، .xls، .xlsx، .psd)، فایل‌های صوتی (.mp3، .m4a، .ogg، .wav) و ویدئویی (.mp4، .m4v، .mov، .wmv، .avi، .mpg، .ogv، .3gp، .3g2) .

اما با پیشرفت فناوری وب، فرمت‌های جدید و کارآمدتری ظهور کرده‌اند که وردپرس هنوز آن‌ها را به لیست پیش‌فرض خود اضافه نکرده است. این فرمت‌ها مزایای قابل‌توجهی برای سئو و سرعت سایت دارند:

  • WEBP: فرمت تصویری که حجم کمتری نسبت به JPEG و PNG دارد و کیفیت بهتری ارائه می‌دهد و به‌طور گسترده در مرورگرهای مدرن پشتیبانی می‌شود.
  • AVIF: فرمت تصویر نسل جدید که فشرده‌سازی حتی بهتری نسبت به WEBP دارد و حجم فایل را به‌شدت کاهش می‌دهد.
  • SVG: فرمت گرافیک برداری که برای لوگوها، آیکون‌ها و تصاویر با کیفیت بالا در هر اندازه‌ای عالی است و در طراحی مدرن بسیار پرکاربرد است .
  • WOFF2: فرمت فونت تحت وب که نسبت به WOFF فشرده‌تر است و سرعت بارگذاری فونت‌ها را بهبود می‌بخشد .
  • WOFF: فرمت استاندارد فونت تحت وب که در نسخه‌های قدیمی‌تر مرورگرها پشتیبانی می‌شود.
  • ICO: فرمت آیکون مرورگر (Favicon) که برای نمایش در تب مرورگر و نشان‌گذاری سایت استفاده می‌شود.
  • JSON: فرمت تبادل داده که برای واردات/خروجات اطلاعات، تنظیمات افزونه‌ها و ارتباط با APIها بسیار رایج است.
  • CSV: فرمت صفحه‌گسترده که برای واردات انبوه محصولات، کاربران و سایر داده‌ها در فروشگاه‌های ووکامرس کاربرد دارد.
  • EPS: فرمت فایل طراحی برداری که در صنعت چاپ و گرافیک کاربرد گسترده‌ای دارد.
  • AI: فرمت فایل اختصاصی Adobe Illustrator که برای فایل‌های طراحی حرفه‌ای استفاده می‌شود.

بنابراین، برای استفاده از این فرمت‌های جدید در سایت خود، باید محدودیت‌های وردپرس را به‌درستی مدیریت کنیم تا هم از مزایای آن‌ها بهره‌مند شویم و هم امنیت سایت حفظ شود.

روش اول: غیرفعال‌سازی کامل سیستم اعتبارسنجی (سریع اما پرخطر)

ساده‌ترین و سریع‌ترین روش برای رفع این مشکل، افزودن یک خط کد به فایل wp-config.php است. با این کار، وردپرس تمام محدودیت‌های فرمت فایل را به‌کلی غیرفعال می‌کند و عملاً هر فرمتی قابل آپلود خواهد بود.

مراحل انجام:

  1. از طریق FTP یا مدیریت فایل هاست خود، به ریشه سایت (معمولاً public_html) دسترسی پیدا کنید.
  2. فایل wp-config.php را پیدا کرده و با یک ویرایشگر متن باز کنید.
  3. دقیقاً قبل از خط /* That's all, stop editing! Happy publishing. */، کد زیر را اضافه کنید:
define('ALLOW_UNFILTERED_UPLOADS', true);
  1. فایل را ذخیره کرده و مجدداً از طریق FTP آپلود کنید.
  2. از پنل وردپرس خارج شده و دوباره وارد شوید تا تغییرات اعمال شود.

هشدار مهم: این روش به کاربران ادمین اجازه می‌دهد هر نوع فایلی از جمله فایل‌های PHP مخرب را آپلود کنند. استفاده از این روش برای همیشه، یک خطر امنیتی جدی است . توصیه می‌شود فقط برای آپلود یک فایل خاص، به‌طور موقت از این روش استفاده کنید و بلافاصله پس از اتمام کار، خط اضافه‌شده را حذف کنید.

روش دوم: افزودن فرمت‌های خاص با فیلتر upload_mimes (امن و استاندارد)

روش امن‌تر و استاندارد این است که فقط فرمت‌هایی که واقعاً به آن‌ها نیاز دارید را به لیست مجاز وردپرس اضافه کنید. این کار با استفاده از فیلتر upload_mimes در فایل functions.php انجام می‌شود.

مراحل انجام:

  1. به پیشخوان وردپرس بروید و از مسیر ظاهر > ویرایشگر قالب (Theme File Editor) وارد شوید.
  2. فایل functions.php قالب فعال خود را انتخاب کنید.
  3. کد زیر را در انتهای فایل (قبل از ?> اگر وجود دارد) اضافه کنید:
/*
 * Allow Additional File Types in WordPress Upload
 * Safely adds support for modern web formats including WEBP, AVIF, SVG, WOFF, WOFF2, ICO, JSON, CSV, EPS, AI, and more
 * Mahdi Jafarzadeh
 * https://www.wpwm.ir/
 */

function wpwm_allow_additional_mime_types($mimes) {
    // ========== IMAGE FORMATS ==========
    // WEBP - Modern image format with better compression
    $mimes['webp'] = 'image/webp';
    
    // AVIF - Next-generation image format with superior compression
    $mimes['avif'] = 'image/avif';
    
    // SVG - Scalable Vector Graphics for logos and icons
    $mimes['svg'] = 'image/svg+xml';
    
    // ICO - Favicon and icon format
    $mimes['ico'] = 'image/x-icon';
    
    // ========== FONT FORMATS ==========
    // WOFF - Web Open Font Format (standard, widely supported)
    $mimes['woff'] = 'font/woff|application/font-woff|application/x-font-woff|application/octet-stream';
    
    // WOFF2 - Compressed Web Open Font Format (modern, better compression)
    $mimes['woff2'] = 'font/woff2|application/octet-stream|font/x-woff2';
    
    // TTF - TrueType Font (use with caution - large file size)
    // $mimes['ttf'] = 'font/ttf|application/x-font-ttf';
    
    // OTF - OpenType Font
    // $mimes['otf'] = 'font/otf|application/x-font-opentype';
    
    // ========== DATA FORMATS ==========
    // JSON - Data interchange format
    $mimes['json'] = 'application/json';
    
    // CSV - Comma-separated values for bulk imports
    $mimes['csv'] = 'text/csv';
    
    // XML - Extensible Markup Language
    // $mimes['xml'] = 'application/xml|text/xml';
    
    // ========== DOCUMENT & DESIGN FORMATS ==========
    // EPS - Encapsulated PostScript (design files)
    $mimes['eps'] = 'application/postscript';
    
    // AI - Adobe Illustrator files
    $mimes['ai'] = 'application/illustrator|application/postscript';
    
    return $mimes;
}
add_filter('upload_mimes', 'wpwm_allow_additional_mime_types');

/**
 * Fix for WordPress strict MIME type checking
 * Some WordPress versions have strict MIME validation that may still block files
 * even after adding them to upload_mimes. This filter fixes that issue.
 * Especially important for font files (WOFF, WOFF2) which often get detected as application/octet-stream
 */
function wpwm_fix_filetype_and_ext($types, $file, $filename, $mimes) {
    // Check for WEBP files
    if (false !== strpos($filename, '.webp')) {
        $types['ext'] = 'webp';
        $types['type'] = 'image/webp';
    }
    
    // Check for AVIF files
    if (false !== strpos($filename, '.avif')) {
        $types['ext'] = 'avif';
        $types['type'] = 'image/avif';
    }
    
    // Check for SVG files
    if (false !== strpos($filename, '.svg')) {
        $types['ext'] = 'svg';
        $types['type'] = 'image/svg+xml';
    }
    
    // Check for WOFF files
    if (false !== strpos($filename, '.woff')) {
        $types['ext'] = 'woff';
        $types['type'] = 'font/woff|application/font-woff|application/x-font-woff|application/octet-stream';
    }
    
    // Check for WOFF2 files
    if (false !== strpos($filename, '.woff2')) {
        $types['ext'] = 'woff2';
        $types['type'] = 'font/woff2|application/octet-stream|font/x-woff2';
    }
    
    // Check for ICO files
    if (false !== strpos($filename, '.ico')) {
        $types['ext'] = 'ico';
        $types['type'] = 'image/x-icon';
    }
    
    // Check for JSON files
    if (false !== strpos($filename, '.json')) {
        $types['ext'] = 'json';
        $types['type'] = 'application/json';
    }
    
    // Check for CSV files
    if (false !== strpos($filename, '.csv')) {
        $types['ext'] = 'csv';
        $types['type'] = 'text/csv';
    }
    
    // Check for EPS files
    if (false !== strpos($filename, '.eps')) {
        $types['ext'] = 'eps';
        $types['type'] = 'application/postscript';
    }
    
    // Check for AI files
    if (false !== strpos($filename, '.ai')) {
        $types['ext'] = 'ai';
        $types['type'] = 'application/illustrator|application/postscript';
    }
    
    return $types;
}
add_filter('wp_check_filetype_and_ext', 'wpwm_fix_filetype_and_ext', 10, 4);
  1. فایل را ذخیره کنید.

این کد دو کار انجام می‌دهد:

  1. افزودن MIME Type به لیست مجاز: با استفاده از فیلتر upload_mimes، فرمت‌های مورد نظر را به لیست MIME Typeهای قابل قبول وردپرس اضافه می‌کند .
  2. رفع مشکل اعتبارسنجی سخت‌گیرانه وردپرس: در نسخه‌های جدیدتر وردپرس (به‌ویژه از نسخه ۵.۰.۱ به بعد)، اعتبارسنجی MIME Type سخت‌گیرانه‌تر شده است و ممکن است حتی با اضافه کردن به upload_mimes، برخی فرمت‌ها باز هم مسدود شوند. این مشکل به ویژه برای فایل‌های فونت (WOFF و WOFF2) که اغلب با MIME Type application/octet-stream شناسایی می‌شوند، رایج است . فیلتر wp_check_filetype_and_ext این مشکل را برطرف می‌کند و به وردپرس می‌گوید که این فرمت‌ها معتبر هستند .

مقایسه دو روش

ویژگیروش اول (ALLOW_UNFILTERED_UPLOADS)روش دوم (upload_mimes)
سطح امنیت🔴 بسیار پایین – تمام فرمت‌ها مجاز می‌شوند🟢 بالا – فقط فرمت‌های مشخص‌شده مجاز می‌شوند
پیچیدگی🟢 بسیار ساده – فقط یک خط کد🟡 متوسط – نیاز به کدنویسی بیشتر
ریسک🔴 بالا – امکان آپلود فایل‌های مخرب🟢 پایین – کنترل کامل روی فرمت‌های مجاز
قابلیت نگهداری🔴 پایین – باید هر بار پس از آپلود حذف شود🟢 بالا – یکبار تنظیم و همیشه فعال
مناسب برایآپلود موقتی و اضطراریاستفاده دائمی و حرفه‌ای

نکات مهم

در این بخش به نکات کلیدی برای استفاده صحیح از این کدها اشاره می‌کنیم که باید به آن‌ها توجه ویژه‌ای داشته باشید:

  • استفاده از قالب فرزند: همیشه کدهای functions.php را در قالب فرزند (Child Theme) قرار دهید تا با بروزرسانی قالب اصلی، تغییرات شما از بین نرود.
  • WEBP و AVIF در نسخه‌های قدیمی وردپرس: اگر از نسخه‌های قدیمی وردپرس استفاده می‌کنید، ممکن است WEBP و AVIF به‌طور کامل پشتیبانی نشوند. بهتر است وردپرس را به آخرین نسخه به‌روزرسانی کنید .
  • MIME Type صحیح: دقت کنید که MIME Type هر فرمت به‌درستی وارد شود. برای فرمت‌هایی مانند WOFF و WOFF2 که ممکن است با MIME Typeهای مختلفی شناسایی شوند، چندین مقدار در کد گنجانده شده است .
  • SVG و ریسک امنیتی: فایل‌های SVG می‌توانند حاوی کدهای جاوااسکریپت مخرب باشند . برای افزودن SVG حتماً از افزونه‌های امن مانند Safe SVG استفاده کنید یا فایل‌های SVG را فقط از منابع معتبر آپلود کنید.
  • فرمت‌های فونت: TTF و OTF حجم بالایی دارند و برای استفاده در وب توصیه نمی‌شوند. بهتر است از WOFF2 استفاده کنید که فشرده‌تر است.
  • تست پس از اعمال کد: پس از افزودن کد، حتماً یک فایل با فرمت مورد نظر را آپلود کنید و از عملکرد صحیح آن اطمینان حاصل کنید.
  • پاکسازی کش: اگر پس از اعمال کد، همچنان خطای عدم مجوز را مشاهده می‌کنید، کش مرورگر و کش سایت خود را پاک کنید.
  • استفاده از افزونه به جای کد: اگر با کدنویسی آشنا نیستید، می‌توانید از افزونه‌های رایگان مانند File Upload Types توسط WPForms یا WP Extra File Types استفاده کنید که امکان افزودن فرمت‌ها را از طریق رابط کاربری فراهم می‌کنند .

جمع‌بندی

در این مقاله از سری مقالات آموزشی وردپرس، دو روش برای رفع محدودیت آپلود فرمت‌های فایل در وردپرس آموزش داده شد. روش اول با استفاده از define('ALLOW_UNFILTERED_UPLOADS', true) سریع اما پرخطر است و کل سیستم امنیتی را غیرفعال می‌کند. روش دوم با استفاده از فیلتر upload_mimes و wp_check_filetype_and_ext، امن و استاندارد است و فقط فرمت‌های مورد نظر شما را به لیست مجاز اضافه می‌کند. برای استفاده دائمی و حرفه‌ای، روش دوم توصیه می‌شود. با این روش می‌توانید فرمت‌های مدرنی مانند WEBP، AVIF، SVG، WOFF، WOFF2، JSON، CSV، ICO، EPS و AI را به‌راحتی به کتابخانه رسانه وردپرس اضافه کنید و از مزایای آن‌ها در بهبود سئو و سرعت سایت بهره‌مند شوید.

امیدواریم این آموزش برای شما مفید بوده باشد. اگر سوالی درباره افزودن فرمت‌های فایل جدید به وردپرس، نحوه استفاده از کد یا هر بخش دیگری از این آموزش دارید، لطفاً در بخش نظرات مطرح کنید. همچنین اگر تجربه‌ای در رفع خطاهای آپلود وردپرس دارید، خوشحال می‌شویم آن را با ما و سایر کاربران به اشتراک بگذارید.

نظر یا سوال شما درباره این کد

اگر نظر یا سوالی درباره این کد دارید بنویسید، ما در سریعترین زمان بررسی می‌کنیم و جواب شما رو میدیم.

ایمیل شما منتشر نخواهد شد.
اولین نفری باشید که نظر می دهد!

مقالات آموزش و نکات وردپرس