الانتقال إلى المحتوى
الصور والوسائط

كيف تعطّل صور ‎-scaled في WordPress (‏big_image_size_threshold)

عالج الصور الباهتة في WordPress برفع حد 2560 بكسل أو إزالته عبر فلتر big_image_size_threshold، واعرف لماذا تكون إعادة الرفع هي الخطوة التي يتجاهلها الجميع.

نُشر

أضف فلترًا على big_image_size_threshold يُرجع false فيتوقف WordPress عن إنشاء نسخ -scaled عند الرفع. أرجِع رقمًا بدلًا من ذلك فترفع الحد بدل إزالته. كلاهما يوضع في functions.php أو في إضافة mu صغيرة، وكلاهما يؤثر فقط في الملفات المرفوعة بعد تفعيل الفلتر.

// 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 فعلًا

منذ الإصدار 5.3 من WordPress، يُقاس كل ملف مرفوع على ضلعه الأطول. فإن كان ذلك الضلع أكبر من big_image_size_threshold — وهو 2560 بكسل افتراضيًا — يعيد 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

هذه الحقيقة وحدها هي سبب وقوع كثيرين في هذا الفخ.

لماذا هذا هو السبب المعتاد لـ”صورتي الحادة تبدو باهتة”

أمران يقعان في وقت واحد، وواحد منهما فقط ظاهر.

الظاهر هو الدقة. ترفع صورة بعرض 4000 بكسل لتكون صورة رئيسية بعرض كامل. يسلّم WordPress المتصفح 2560 بكسل. على شاشة عادية تملأ حاوية بعرض 1600 بكسل لا يلاحظ أحد شيئًا. أما على شاشة ريتينا مضاعفة الكثافة فتلك الحاوية تريد نحو 3200 بكسل حقيقي، وتحصل على 2560، فيكبّر المتصفح الفارق. حواف ناعمة، وتفاصيل مهترئة، ونص داخل الصورة يصبح ضبابيًا.

الأقل ظهورًا هو إعادة الترميز. النسخة -scaled ليست قصّة بلا فقد من ملفك. يفكّ WordPress ترميز ملفك المرفوع، ويعيد تحجيمه، ثم يعيد ضغطه بإعداد جودة JPEG الخاص به. وإن كان أصلك أصلًا ملف JPEG مضغوطًا خارجًا من Lightroom أو من هاتف، فهذا ترميز من الجيل الثاني: تشوّهات ضغط فوق تشوّهات ضغط. التفاصيل الدقيقة وحبيبات الفيلم والتدرجات المسطّحة تنال أسوأ نصيب. وترى ذلك حتى حين تبدو الأبعاد بالبكسل كافية.

تأكّد قبل أن تغيّر أي شيء. افتح الصورة في تبويب جديد واقرأ اسم الملف في الرابط. وجود -scaled.jpg يعني أن الحد قد عمل. أما لاحقة أبعاد مثل -1536x1024.jpg فتعني شيئًا مختلفًا — اختار srcset مرشّحًا وسيطًا أصغر من اللازم، وفلتر الحد لن ينفعك هناك.

على الخادم:

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

إن كان الرقم كبيرًا فالحد كان يشكّل مكتبتك كلها.

يمكنك أيضًا إدراج ملف في أداة تعطيل الصور المصغّرة لترى هل سيتجاوز مصدر معيّن الحد وعند أي أبعاد ستستقر النسخة المصغّرة، قبل أن تلتزم بإعداد ما.

المقايضة الصريحة

معظم المقالات تخبرك أن تعطيل الحد يكلّف مساحة قرص. هذا مقلوب، ويستحق الدقة في بيانه.

استهلاك القرص لكل صورة ينخفض قليلًا. فمع تفعيل الحد يخزّن WordPress أصلك و نسخة كبيرة مصغّرة. ومع تعطيله تحتفظ بالأصل وحده. ملف واحد بدل اثنين.

عرض النطاق ووزن الصفحة يرتفعان، وأحيانًا كثيرًا. فمع تعطيل الحد يصبح full هو ملفك المرفوع كما هو. وكل ما يرتبط بالمقاس الكامل أو يعرضه — صندوق ضوئي، أو إضافة معرض، أو رابط “عرض الأصل”، أو قالب يطلب full للصور الرئيسية — صار يشحن ملفًا قد يبلغ 6 ميغابايت بدل 900 كيلوبايت. على الجوال هذه مشكلة حقيقية في Largest Contentful Paint، وشبكات توزيع الصور لن تنقذك دائمًا لأن بعضها يمرّر الملف كما هو فوق حد حجم معيّن.

استهلاك الذاكرة أثناء الرفع يرتفع. فتحجيم صورة بعرض 6000 بكسل في PHP يستهلك ذاكرة أكبر بكثير من صورة بعرض 2560. وعلى استضافة مشتركة رخيصة بحد ذاكرة PHP منخفض، يصبح تعطيل الحد سببًا معقولًا لبدء ظهور عمليات رفع فاشلة أو قصص مصغّرة مولَّدة جزئيًا. ورفع الحد إلى 3840 بدل إزالته هو النسخة الأكثر أمانًا من التغيير نفسه.

ولهذا فالإعداد المعقول لمعظم المواقع هو رفع الرقم لا إزالته. الإزالة صحيحة حين تقدّم صورًا تحتاج فعلًا إلى الدقة الكاملة: معارض بجودة طباعة، أو تكبير المنتجات، أو تصوير معماري، وكل ما يُتوقع فيه أن يتفحّص المستخدم الأصل.

تطبيق التغيير كما ينبغي

1. ضع الفلتر في مكان يبقى فيه. ملف functions.php في قالب فرعي يفي بالغرض. لكن إضافة mu من ملف واحد أفضل، لأن تبديل القالب لا يستطيع إبطالها بصمت.

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

2. أعد رفع الصور المتأثرة. هذه هي الخطوة التي يتجاهلها الناس ثم يستنتجون أن الفلتر لم يعمل. الحد يُقيَّم مرة واحدة، عند الرفع. والمرفقات الموجودة تحتفظ ببياناتها الوصفية القديمة إلى الأبد. احذف المرفق وارفعه من جديد، ثم أصلح الإشارات إليه في مقالاتك.

3. لا تتوقع من إعادة توليد القصص المصغّرة أن تنقذ شيئًا. أمر wp media regenerate عبر WP-CLI يعيد بناء المقاسات الوسيطة من الملف الذي تسمّيه البيانات الوصفية كاملًا — وهو للصورة المحدودة أصلًا النسخة -scaled. لا يستطيع استعادة تفاصيل أُلقيت. مفيد كتنظيف بعد إعادة الرفع. عديم الجدوى كعلاج قائم بذاته.

4. تحقق من النتيجة ولا تفترضها. بعد إعادة الرفع، افتح الصورة في الواجهة واقرأ اسم الملف مجددًا. غياب -scaled يعني أن الفلتر يعمل.

متى يكون التعطيل خطوة خاطئة

إذا كانت صورك المصدر أصلًا أصغر من 2560 بكسل وما زالت تبدو باهتة، فالحد لم يكن طرفًا في الأمر أصلًا. المشكلة أن صندوق العرض أكبر من البكسلات المتاحة، والحل ملف مصدر أكبر أو حاوية أصغر — لا هذا الفلتر.

وإذا حمل اسم الملف المقدَّم لاحقة أبعاد بدل -scaled، فقد اختار srcset مرشّحًا صغيرًا. وهذا عادةً عدم تطابق بين عرض المحتوى المعلن في قالبك والصندوق الذي تُعرض فيه الصورة فعليًا. وتعطيل الحد لا يغيّر شيئًا في ذلك.

وإذا كانت إضافة تعيد كتابة src إلى أداة تحسين أو وسيط شبكة توزيع، فلا شيء مما سبق ينطبق حتى تفحص ما يقدّمه ذلك الوسيط. قارن ما يفترض أن يولّده WordPress بما يحمّله المتصفح فعلًا؛ وحين يختلفان، انظر إلى ما يقف بينهما.

FAQ

أسئلة

كيف أعطّل صور scaled في WordPress؟

أضف فلترًا على big_image_size_threshold يُرجع false. ضعه في functions.php أو في إضافة mu صغيرة. إرجاع false يُلغي الحد تمامًا، فتحتفظ الملفات المرفوعة بأبعادها الأصلية ولا تُنشأ نسخة ‎-scaled. أما إرجاع رقم بدلًا من ذلك، مثل 3840، فيرفع الحد ولا يزيله.

ما معنى اللاحقة ‎-scaled في اسم ملف WordPress؟

تشير إلى نسخة أعاد WordPress ترميزها لأن ملفك المرفوع تجاوز 2560 بكسل على ضلعه الأطول. تصبح تلك النسخة هي المقاس الكامل في كل مكان على موقعك. ملفك الأصلي يبقى على القرص باسمه العادي لكن لا شيء في الواجهة يرتبط به، وكل قصّة مصغّرة وكل مرشّح في srcset يُبنى من النسخة المصغّرة.

هل يستهلك تعطيل صور scaled مساحة أكبر على القرص؟

لكل صورة يستهلك عادةً مساحة أقل قليلًا، لأن WordPress يتوقف عن كتابة ملف كبير ثانٍ بجوار أصلك. التكلفة الحقيقية في عرض النطاق لا في التخزين. فمع تعطيل الحد، كل ما يرتبط بالمقاس الكامل يقدّم ملفك الأصلي كما هو، وقد يبلغ عدة ميغابايت على اتصال هاتفي.

هل يصلح تعطيل الحد الصور الباهتة الموجودة أصلًا؟

لا. الفلتر يؤثر في الملفات المرفوعة الجديدة فقط. الصور الموجودة في المكتبة تحتفظ ببيانات وصفية تشير إلى نسختها المصغّرة، وإعادة توليد القصص المصغّرة تعيد البناء من الملف المحدود نفسه. لاستعادة الدقة عليك حذف المرفق ورفعه من جديد بعد تفعيل الفلتر.

هل 2560 بكسل هو الحد المناسب للإبقاء عليه؟

لمعظم مواقع المحتوى، نعم. مصدر بعرض 2560 بكسل يغطي صندوق عرض بعرض 1280 بكسل بكثافة بكسل مضاعفة، وهي الحالة الشائعة. ارفعه إلى 3840 إن كنت تستخدم صورًا رئيسية بعرض كامل أو تكبير المنتجات أو معارض تصوير فوتوغرافي. ولا تعطّله كليًا إلا حين تحتاج فعلًا إلى تقديم الملفات الأصلية دون مساس.