مواد پر جائیں
امیجز اور میڈیا

WordPress کی -scaled امیجز کیسے بند کریں (big_image_size_threshold)

big_image_size_threshold فلٹر سے 2560px کی حد بڑھا کر یا ہٹا کر دھندلی WordPress امیجز ٹھیک کریں، اور جانیں کہ دوبارہ اپ لوڈ کرنا وہ قدم کیوں ہے جسے لوگ چھوڑ دیتے ہیں۔

شائع شدہ

big_image_size_threshold پر ایک فلٹر لگائیں جو false واپس کرے، اور WordPress اپ لوڈ کے وقت -scaled کاپیاں بنانا بند کر دے گا۔ اس کے بجائے کوئی نمبر واپس کریں تو حد ختم ہونے کے بجائے بڑھ جاتی ہے۔ دونوں functions.php میں یا کسی چھوٹے mu-plugin میں جاتے ہیں، اور دونوں کا اثر صرف ان اپ لوڈز پر ہوتا ہے جو فلٹر فعال ہونے کے بعد کیے جائیں۔

// Disable the cap entirely — no -scaled copies at all.
add_filter( 'big_image_size_threshold', '__return_false' );
// Or just raise it. Longest edge, in pixels.
add_filter( 'big_image_size_threshold', function () {
    return 3840;
} );

WordPress اصل میں کر کیا رہا ہے

WordPress 5.3 سے ہر اپ لوڈ کا لمبا کنارہ ناپا جاتا ہے۔ اگر وہ کنارہ big_image_size_threshold سے بڑا ہو — جو ڈیفالٹ میں 2560px ہے — تو WordPress تصویر کو اسی حد تک دوبارہ انکوڈ کرتا ہے، اسے your-photo-scaled.jpg کے نام سے محفوظ کرتا ہے، اور اٹیچمنٹ میٹا ڈیٹا یوں بدل دیتا ہے کہ full سائز اب اسی اسکیلڈ کاپی کی طرف اشارہ کرے۔

آپ کی اصل فائل حذف نہیں ہوتی۔ وہ ڈسک پر اپنے اصل نام سے رہتی ہے، اٹیچمنٹ میٹا ڈیٹا میں درج ہوتی ہے، اور PHP میں wp_get_original_image_path() کے ذریعے قابلِ رسائی ہوتی ہے۔ لیکن فرنٹ اینڈ پر کوئی چیز اسے پیش نہیں کرتی۔ نہ بلاک ایڈیٹر، نہ srcset، نہ میڈیا لائبریری کا پیش منظر۔ وہ بس ایک آرکائیو کاپی کی طرح پڑی رہتی ہے۔

اس کے بعد ہر چیز اسی اسکیلڈ فائل سے بنتی ہے، اُس سے نہیں جو آپ نے اپ لوڈ کی تھی:

سائزکس سے بنایا جاتا ہے
full-scaled کاپی
large, medium_large, medium, thumbnail-scaled کاپی
add_image_size سے بنے کسٹم سائزز-scaled کاپی
تھیم اور پلگ اِن کے سائزز، مثلاً woocommerce_thumbnail-scaled کاپی
srcset امیدوار-scaled کاپی

بس یہی ایک بات ہے جس میں اتنے سارے لوگ پھنستے ہیں۔

“میری تیز تصویر دھندلی کیوں لگتی ہے” کی عام وجہ یہی ہے

دو چیزیں ایک ساتھ ہوتی ہیں، اور ان میں سے صرف ایک نمایاں ہوتی ہے۔

نمایاں والی ریزولوشن ہے۔ آپ پورے عرض کے ہیرو کے لیے 4000px کی تصویر اپ لوڈ کرتے ہیں۔ WordPress براؤزر کو 2560px دیتا ہے۔ 1600px کا کنٹینر بھرنے والی عام اسکرین پر کسی کو فرق محسوس نہیں ہوتا۔ 2x ریٹینا اسکرین پر اسی کنٹینر کو تقریباً 3200 اصل پکسل چاہیے ہوتے ہیں، ملتے 2560 ہیں، اور براؤزر باقی کمی کو کھینچ کر پورا کرتا ہے۔ کنارے نرم، تفصیل گڑبڑ، اور تصویر کے اندر لکھا متن دھندلا۔

کم نمایاں والی دوبارہ انکوڈنگ ہے۔ -scaled کاپی آپ کی فائل کا بغیر نقصان کے کاٹا ہوا ٹکڑا نہیں ہے۔ WordPress آپ کی اپ لوڈ کو ڈی کوڈ کرتا ہے، سائز بدلتا ہے، اور اپنی JPEG کوالٹی سیٹنگ پر دوبارہ کمپریس کرتا ہے۔ اگر آپ کی اصل فائل پہلے ہی Lightroom یا فون سے نکلی ہوئی کمپریسڈ JPEG تھی، تو یہ دوسری نسل کا انکوڈ ہے: کمپریشن کے نشانات کے اوپر مزید کمپریشن کے نشانات۔ باریک تفصیل، فلم گرین، اور ہموار گریڈیئنٹس سب سے زیادہ متاثر ہوتے ہیں۔ یہ فرق تب بھی نظر آ جاتا ہے جب پکسل کی پیمائش بظاہر کافی لگ رہی ہو۔

کچھ بدلنے سے پہلے اس کی تصدیق کر لیں۔ تصویر نئے ٹیب میں کھولیں اور URL میں فائل کا نام پڑھیں۔ -scaled.jpg کا مطلب ہے کہ حد لگی ہے۔ پیمائش والا سابقہ جیسے -1536x1024.jpg کچھ اور معاملہ ہے — یہاں srcset نے ایسا درمیانی سائز چنا جو بہت چھوٹا تھا، اور اس صورت میں یہ فلٹر آپ کی مدد نہیں کرے گا۔

سرور پر:

find wp-content/uploads -name '*-scaled.*' | wc -l

اگر یہ عدد بڑا ہے، تو یہ حد آپ کی پوری لائبریری کی شکل طے کرتی رہی ہے۔

آپ ڈس ایبل اسکیلڈ امیجز ٹول میں ایک فائل ڈال کر بھی دیکھ سکتے ہیں کہ کوئی سورس اس حد سے ٹکراتی ہے یا نہیں اور اسکیلڈ کاپی کن پیمائشوں پر آ کر رکے گی، اس سے پہلے کہ آپ کوئی سیٹنگ طے کریں۔

کھرا سودا

زیادہ تر مضامین کہتے ہیں کہ حد بند کرنے سے ڈسک اسپیس زیادہ لگتی ہے۔ یہ الٹ بات ہے، اور اس پر درستی سے بات کرنی چاہیے۔

فی امیج ڈسک کا استعمال ذرا کم ہوتا ہے۔ حد آن ہو تو WordPress آپ کی اصل فائل اور ایک بڑی اسکیلڈ کاپی، دونوں رکھتا ہے۔ بند ہو تو صرف اصل فائل رہتی ہے۔ دو کے بجائے ایک فائل۔

بینڈوتھ اور پیج کا وزن بڑھتا ہے، کبھی کبھی بہت زیادہ۔ حد بند ہو تو full آپ کی بغیر چھیڑی ہوئی اپ لوڈ ہوتی ہے۔ جو چیز بھی full سائز سے لنک یا رینڈر کرتی ہے — لائٹ باکس، گیلری پلگ اِن، “اصل دیکھیں” لنک، یا وہ تھیم جو ہیرو امیجز کے لیے full مانگتی ہے — اب 900KB کے بجائے 6MB کی فائل بھیجے گی۔ موبائل پر یہ Largest Contentful Paint کا حقیقی مسئلہ ہے، اور امیج CDNs ہمیشہ آپ کو نہیں بچائیں گے کیونکہ ان میں سے کچھ ایک خاص سائز سے اوپر فائل کو بغیر تبدیلی گزار دیتے ہیں۔

اپ لوڈ کے دوران میموری کا استعمال بڑھتا ہے۔ PHP میں 6000px کی تصویر کا سائز بدلنا 2560px والی کے مقابلے میں کہیں زیادہ میموری مانگتا ہے۔ کم PHP میموری والی سستی شیئرڈ ہوسٹنگ پر حد بند کرنا ناکام اپ لوڈز یا ادھورے بنے تھمب نیلز کی معقول وجہ بن سکتا ہے۔ حد ہٹانے کے بجائے اسے 3840 تک بڑھا دینا اسی تبدیلی کا محفوظ تر روپ ہے۔

اسی لیے زیادہ تر سائٹس کے لیے معقول ڈیفالٹ یہ ہے کہ نمبر بڑھایا جائے، ہٹایا نہ جائے۔ ہٹانا تب درست ہے جب آپ ایسی تصاویر پیش کر رہے ہوں جنہیں واقعی پوری ریزولوشن چاہیے: پرنٹ کوالٹی گیلریاں، پروڈکٹ زوم، فنِ تعمیر کی فوٹوگرافی، یا کوئی بھی ایسی جگہ جہاں صارف سے اصل فائل کا جائزہ لینے کی توقع ہو۔

تبدیلی درست طریقے سے لاگو کرنا

1. فلٹر ایسی جگہ رکھیں جہاں وہ قائم رہے۔ چائلڈ تھیم کی functions.php چل جاتی ہے۔ ایک فائل والا mu-plugin بہتر ہے، کیونکہ تھیم بدلنے سے وہ خاموشی سے ختم نہیں ہو سکتا۔

<?php
/**
 * Plugin Name: Raise big image threshold
 */
add_filter( 'big_image_size_threshold', function () {
    return 3840;
} );

2. متاثرہ امیجز دوبارہ اپ لوڈ کریں۔ یہی وہ قدم ہے جسے لوگ چھوڑ دیتے ہیں اور پھر یہ نتیجہ نکالتے ہیں کہ فلٹر کام نہیں کرتا۔ یہ حد صرف ایک بار، اپ لوڈ کے وقت، جانچی جاتی ہے۔ موجودہ اٹیچمنٹس ہمیشہ اپنا پرانا میٹا ڈیٹا رکھتے ہیں۔ اٹیچمنٹ حذف کریں، تصویر دوبارہ اپ لوڈ کریں، پھر اپنی پوسٹس میں حوالے درست کر لیں۔

3. تھمب نیل دوبارہ بنانے سے کسی معجزے کی توقع نہ رکھیں۔ WP-CLI کی wp media regenerate درمیانی سائزز اسی فائل سے بناتی ہے جسے میٹا ڈیٹا full کہتا ہے — اور پہلے سے محدود شدہ تصویر کے لیے وہ -scaled کاپی ہی ہوتی ہے۔ یہ وہ تفصیل واپس نہیں لا سکتی جو ضائع ہو چکی۔ دوبارہ اپ لوڈ کے بعد صفائی کے لیے مفید ہے۔ اکیلے حل کے طور پر بےکار ہے۔

4. نتیجہ خود جانچیں، فرض نہ کریں۔ دوبارہ اپ لوڈ کے بعد تصویر فرنٹ اینڈ پر کھولیں اور فائل کا نام دوبارہ پڑھیں۔ -scaled نہ ہو تو فلٹر فعال ہے۔

کب حد بند کرنا غلط قدم ہے

اگر آپ کی سورس امیجز پہلے ہی 2560px سے کم ہیں اور پھر بھی دھندلی لگتی ہیں، تو اس حد کا اس معاملے سے کوئی تعلق ہی نہیں تھا۔ مسئلہ یہ ہے کہ ڈسپلے باکس دستیاب پکسلز سے بڑا ہے، اور حل بڑی سورس فائل یا چھوٹا کنٹینر ہے — یہ فلٹر نہیں۔

اگر پیش کی جانے والی فائل کے نام میں -scaled کے بجائے پیمائش والا سابقہ ہے، تو srcset نے چھوٹا امیدوار چنا ہے۔ عام طور پر یہ آپ کی تھیم کے اعلان کردہ کنٹینٹ ودتھ اور اُس باکس کے درمیان عدم مطابقت ہوتی ہے جس میں تصویر واقعی رینڈر ہوتی ہے۔ حد بند کرنے سے اس میں کچھ نہیں بدلے گا۔

اور اگر کوئی پلگ اِن آپ کے src کو کسی آپٹیمائزر یا CDN پراکسی کی طرف موڑ رہا ہے، تو یہ سب کچھ اس وقت تک بےمعنی ہے جب تک آپ یہ نہ دیکھ لیں کہ وہ پراکسی کیا پیش کر رہا ہے۔ موازنہ کریں کہ WordPress کو کیا بنانا چاہیے اور براؤزر اصل میں کیا لوڈ کرتا ہے؛ جب یہ دونوں مختلف ہوں، تو دیکھیں کہ ان کے بیچ میں بیٹھا کون ہے۔

FAQ

سوالات

WordPress میں scaled امیجز کیسے بند کریں؟

big_image_size_threshold پر ایک فلٹر لگائیں جو false واپس کرے۔ اسے functions.php میں رکھیں یا ایک چھوٹے mu-plugin میں۔ false واپس کرنے سے یہ حد مکمل طور پر ختم ہو جاتی ہے، اپ لوڈز اپنی اصل پیمائش برقرار رکھتے ہیں اور کوئی -scaled کاپی نہیں بنتی۔ اس کے بجائے کوئی نمبر واپس کریں، جیسے 3840، تو حد ختم ہونے کے بجائے بڑھ جاتی ہے۔

WordPress فائل نام میں -scaled کا سابقہ کیا ہوتا ہے؟

یہ اس دوبارہ انکوڈ شدہ کاپی کی نشانی ہے جو WordPress نے اس لیے بنائی کہ آپ کی اپ لوڈ کردہ تصویر کا لمبا کنارہ 2560px سے بڑا تھا۔ وہی کاپی پھر آپ کی پوری سائٹ پر full سائز بن جاتی ہے۔ آپ کی اصل فائل ڈسک پر اپنے عام نام سے موجود رہتی ہے مگر فرنٹ اینڈ پر کوئی چیز اس سے لنک نہیں کرتی، اور ہر تھمب نیل اور srcset امیدوار اسی اسکیلڈ کاپی سے بنتا ہے۔

کیا scaled امیجز بند کرنے سے ڈسک اسپیس زیادہ لگتی ہے؟

فی امیج عموماً تھوڑی کم لگتی ہے، کیونکہ WordPress آپ کی اصل فائل کے ساتھ ایک اور بڑی فائل لکھنا بند کر دیتا ہے۔ اصل قیمت اسٹوریج نہیں، بینڈوتھ ہے۔ حد بند ہونے پر جو چیز بھی full سائز سے لنک کرے وہ آپ کی بغیر چھیڑی ہوئی اپ لوڈ دیتی ہے، جو فون کے کنکشن پر کئی میگا بائٹ ہو سکتی ہے۔

کیا حد بند کرنے سے وہ امیجز ٹھیک ہو جائیں گی جو پہلے سے دھندلی ہیں؟

نہیں۔ یہ فلٹر صرف نئے اپ لوڈز پر اثر ڈالتا ہے۔ لائبریری میں پہلے سے موجود امیجز کا میٹا ڈیٹا اپنی اسکیلڈ کاپی کی طرف اشارہ کرتا رہتا ہے، اور تھمب نیل دوبارہ بنانے سے سائزز اسی محدود فائل سے ہی بنتے ہیں۔ ریزولوشن واپس لانے کے لیے آپ کو اٹیچمنٹ حذف کر کے، فلٹر فعال ہونے کے بعد، تصویر دوبارہ اپ لوڈ کرنی ہو گی۔

کیا 2560px کی حد رکھنا درست ہے؟

زیادہ تر کنٹینٹ سائٹس کے لیے، جی ہاں۔ 2560px کا سورس 1280px کے ڈسپلے باکس کو 2x پکسل کثافت پر پورا کر دیتا ہے، اور یہی عام صورت ہے۔ اگر آپ کے ہاں پورے عرض کے ہیرو، پروڈکٹ زوم، یا فوٹوگرافی گیلریاں ہیں تو اسے 3840 کر دیں۔ اسے مکمل بند صرف تب کریں جب آپ کو واقعی بغیر چھیڑی ہوئی اصل فائلیں پیش کرنی ہوں۔