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

دقت داشته باشید که این کد فقط بر روی تصاویر جدید اعمال خواهد شد اما امکان دارد به دلیل تداخل با سایر کدها، باعث بروز مشکلاتی در فایل های فعلی شما شود. بنابراین حتما پیش از قرار دادن کد زیر، از پوشه wp-content
وردپرس بک آپ تهیه کنید یا این پوشه را به فرمت zip
فشرده کنید و داخل هاست خود نگهدارید تا در صورت بروز مشکل و حذف شدن ناخواسته فایل های اصلی، بتوانید آنها را به سرعت بازیابی کنید.
این کد نیاز به تنظیمات و تغییرات خاصی ندارد اما اگر با کدنویسی PHP آشنایی دارید می توانید آن را شخصی سازی کنید و با ایده گرفتن از نحوه اجرای کد، آن را بهبود ببخشید.
کد زیر را در فایل functions.php
قالب باید استفاده کنید:
function betalk_replace_uploaded_image($image_data) {
// if there is no large image : return
if (!isset($image_data['sizes']['large'])) return $image_data;
// paths to the uploaded image and the large image
$upload_dir = wp_upload_dir();
$uploaded_image_location = $upload_dir['basedir'] . '/' .$image_data['file'];
$large_image_location = $upload_dir['path'] . '/'.$image_data['sizes']['large']['file'];
// delete the uploaded image
unlink($uploaded_image_location);
// rename the large image
rename($large_image_location,$uploaded_image_location);
// update image metadata and return them
$image_data['width'] = $image_data['sizes']['large']['width'];
$image_data['height'] = $image_data['sizes']['large']['height'];
unset($image_data['sizes']['large']);
return $image_data;
}
add_filter('wp_generate_attachment_metadata','betalk_replace_uploaded_image');