دسته‌بندی نشده

رفع مشکل باز نشدن عکس های وردپرس بعد از اضافه شدن .avif به نام فایل‌ها

رفع مشکل باز نشدن عکس های وردپرس

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

وقتی فایل‌ها را داخل هاست بررسی می‌کنید، متوجه می‌شوید که انتهای اسم تصاویر یک .avif اضافه شده است. مثلاً فایل زیر:

				
					photo1656174536-1-150x150.jpg
				
			

به این تبدیل شده:

				
					photo1656174536-1-150x150.jpg.avif
				
			

در این حالت وردپرس هنوز دنبال فایل اصلی (.jpg) می‌گردد، اما فایل واقعی تغییر نام داده و به همین دلیل تصاویر سایت لود نمی‌شوند.

این مشکل چرا اتفاق می‌افتد؟

معمولاً این مشکل بعد از یکی از موارد زیر رخ می‌دهد:

  • فعال‌سازی افزونه‌های بهینه‌سازی تصویر
  • تبدیل خودکار تصاویر به فرمت AVIF
  • تنظیمات اشتباه کش یا CDN
  • مهاجرت سایت به هاست جدید
  • تنظیمات اشتباه LiteSpeed Cache
  • تداخل افزونه‌های WebP / AVIF

در بسیاری از موارد، سیستم به جای ساخت نسخه جدید AVIF، نام فایل اصلی را تغییر می‌دهد و .avif به انتهای فایل اضافه می‌شود.

از کجا بفهمیم دقیقاً همین مشکل را داریم؟

اگر علائم زیر را دارید، احتمالاً مشکل شما همین است:

  • تصاویر سایت ناگهان ناپدید شده‌اند
  • داخل رسانه وردپرس عکس‌ها Broken هستند
  • در سورس صفحه هنوز لینک .jpg یا .png وجود دارد
  • داخل هاست فایل‌ها به شکل .jpg.avif ذخیره شده‌اند
    مثال : 
				
					image.jpg.avif
image.png.avif
image.jpeg.avif
				
			

راه‌حل سریع: حذف گروهی .avif از انتهای فایل‌ها

اگر تعداد فایل‌ها زیاد است، تغییر دستی اسم فایل‌ها تقریباً غیرممکن است.

راه‌حل امن این است که یک اسکریپت PHP اجرا کنیم تا فقط .avif انتهای فایل‌ها حذف شود.

مرحله 1: ورود به پوشه Uploads

داخل هاست وارد مسیر زیر شوید:

				
					wp-content/uploads
				
			

مرحله 2: ساخت فایل PHP

یک فایل جدید بسازید با نام:

				
					fix-avif.php
				
			
حل مشکل باز نشدن عکس سایت ها

مرحله 3: قرار دادن کد

کد زیر را داخل فایل قرار دهید:

				
					<?php

set_time_limit(0);
ini_set('memory_limit', '512M');

$baseDir = __DIR__;
$count = 0;
$skipped = 0;
$failed = 0;

echo "<h2>AVIF Rename Started(Tondtar Group)</h2>";
echo "<hr>";

try {

    $iterator = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator(
            $baseDir,
            RecursiveDirectoryIterator::SKIP_DOTS
        )
    );

    foreach ($iterator as $file) {

        if (!$file->isFile()) {
            continue;
        }

        $filePath = $file->getPathname();

        if (preg_match('/\.(jpg|jpeg|png|gif|webp)\.avif$/i', $filePath)) {

            $newPath = preg_replace('/\.avif$/i', '', $filePath);

            if (file_exists($newPath)) {

                echo "⚠️ Skipped (already exists):<br>";
                echo htmlspecialchars($newPath) . "<br><br>";

                $skipped++;
                continue;
            }

            if (@rename($filePath, $newPath)) {

                echo "✅ Renamed:<br>";
                echo htmlspecialchars($filePath) . "<br>";
                echo "➡️ " . htmlspecialchars($newPath) . "<br><br>";

                $count++;

            } else {

                echo "❌ Failed:<br>";
                echo htmlspecialchars($filePath) . "<br><br>";

                $failed++;
            }
        }
    }
?>
				
			

مرحله 4: اجرای فایل

حالا فایل را داخل مرورگر اجرا کنید:

				
					https://yourdomain.com/wp-content/uploads/fix-avif.php
				
			
تغییر گروهی نام فایل های C-panel

بعد از اجرا، فایل‌هایی که این شکلی هستند:

				
					photo1656174536-1-150x150.jpg.avif
				
			

به این تبدیل می‌شوند:

				
					photo1656174536-1-150x150.jpg
				
			

و میتونید خروجی کار رو مانند تصویر روبرو مشاهده کنید : 

تغییر گروهی نام فایل های C-panel

نکته مهم امنیتی (حتماً بخوانید)

بعد از اینکه عملیات تمام شد و تصاویر سایت برگشت:

فایل fix-avif.php را از هاست حذف کنید.

این فایل فقط برای یک‌بار اجرا ساخته شده و نباید داخل سایت باقی بماند.

همچنین بهتر است قبل از اجرا از پوشه uploads بکاپ بگیرید.

اگر بعد از تغییر نام، عکس‌ها هنوز نمایش داده نشدند چه کنیم؟

اگر فایل‌ها درست rename شدند ولی تصاویر هنوز لود نمی‌شوند، معمولاً مشکل از کش است.

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

  1. کش وردپرس را پاک کنید
  2. اگر LiteSpeed Cache دارید، Purge All بزنید
  3. کش CDN یا Cloudflare را پاک کنید
  4. صفحه سایت را با Ctrl + F5 رفرش کنید

در بیشتر مواقع بعد از پاک کردن کش، تصاویر برمی‌گردند.

سوالات متداول

آیا این روش باعث خراب شدن سایت می‌شود؟

خیر. این اسکریپت فقط فایل‌هایی که دقیقاً انتهای نامشان .avif است را rename می‌کند و فایل‌های دیگر را دست نمی‌زند.

آیا روی سایت‌های المنتور و وودمارت هم کار می‌کند؟

بله. چون فقط نام فایل‌های واقعی داخل هاست اصلاح می‌شود و تغییری در دیتابیس ایجاد نمی‌کند.

آیا این مشکل روی سئو تاثیر دارد؟

اگر تصاویر لود نشوند، می‌تواند روی Image SEO و تجربه کاربری تاثیر منفی بگذارد. بهتر است مشکل سریع برطرف شود تا تصاویر دوباره در دسترس گوگل و کاربران قرار بگیرند.

جمع بندی

اگر تصاویر وردپرس شما باز نمی‌شوند و داخل هاست انتهای اسم فایل‌ها .avif اضافه شده، نیازی به تغییر دستی هزاران فایل نیست. با یک اسکریپت ساده می‌توانید به‌صورت گروهی نام فایل‌ها را اصلاح کنید و سایت را در چند دقیقه به حالت عادی برگردانید.

دیدگاهتان را بنویسید

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