كيفية إزالة الصور غير المستخدمة من مكتبة الوسائط الخاصة بك في WordPress

نشرت: 2019-10-15

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

هذه الصور التي لم تعد تستخدمها في منشوراتك أو صفحاتك ، أو في أي نوع آخر من المحتوى أصبح قديمًا ، تظل مستضافة على الخادم الخاص بك ، مما يؤدي إلى إهدار الموارد ومساحة التخزين. أفضل شيء يمكنك القيام به معهم هو التخلص منها إذا كنت لن تستخدمها مرة أخرى. ولكن كيف يمكنك العثور عليها والتأكد من عدم استخدامها في أي مكان؟ لنرى ذلك ...

قبل البدء

أول شيء تفعله إذا كنت ترغب في حذف الصور من WordPress الخاص بك والتي لم تعد مستخدمة هو إنشاء نسخة احتياطية من موقع الويب الخاص بك ، بما في ذلك ملفات الوسائط داخل المجلد wp-content .

على الرغم من أن الصور التي تقوم بتحميلها إلى مكتبة الوسائط مخزنة في wp-content/uploads/ ، فمن الممكن أنه إذا استخدمت مكونًا إضافيًا لتحميل الملفات ، فسوف ينتهي بها الأمر في مجلد مختلف. وبالتالي ، تأكد من أن لديك نسخة احتياطية من قاعدة بيانات WordPress الخاصة بك وجميع الملفات الموجودة داخل مجلد wp-content وليس فقط wp-content/uploads .

بمجرد إنشاء النسخة الاحتياطية ، يمكننا متابعة الخطوات التالية ...

اكتشف الصور المعزولة في WordPress

هناك عدة طرق لاكتشاف الصور التي لم تعد مستخدمة في أي محتوى داخل موقع WordPress الخاص بك. الأكثر فاعلية هو البحث عنها في قاعدة بيانات WordPress.

لهذا يجب أن نعلم أن الصور التي قمت بتحميلها إلى مكتبة وسائط WordPress مخزنة في الجدول wp_posts كما لو كانت منشورًا أو صفحة. ما يميزهم عن المحتويات الأخرى المخزنة في هذا الجدول هو أن لديهم قيمة المرفق في عمود post_type .

بالمناسبة ، ملاحظة مهمة: إذا لم تكن لديك معرفة بقواعد البيانات ، فمن الأفضل أن تكون حريصًا فيما تفعله من الآن فصاعدًا ، واحتفظ بنسخة احتياطية من قاعدة البيانات ، وتحقق من مقالة WordPress Codex هذه حيث يشرحون كل شيء في تفاصيل اكثر.

أين كنا؟ أوه نعم: نريد أن نجد كل تلك الصور التي لا يتم استخدامها في WordPress الخاص بك. تحديد هذا أسهل من القيام به ، لكن لا تقلق ، سنحاول شرحه خطوة بخطوة وبطريقة بسيطة.

كل ما علينا فعله هو كتابة استعلام بلغة SQL لتشغيله في قاعدة بيانات WordPress MySQL. إذا كنت لا تعرف كيفية الوصول إلى قاعدة بيانات موقع الويب الخاص بك ، فاتصل بموفر الاستضافة للحصول على إرشادات حول كيفية القيام بذلك. إذا سمحوا لك بالوصول إلى phpMyAdmin ، فلا بأس بذلك أيضًا

الاستعلام الذي تريد تشغيله هو:

دعونا نكسرها.

أول شيء نقوم به هو البدء بعبارة SELECT لتحديد كل صفوف معينة من جدول معين. في السطر 2 ، تعني النجمة أننا نريد "كل الأعمدة" في كل صف.

يشير السطران 3 و 4 إلى الجدول (الجداول) التي نهتم بها. في هذه الحالة ، نريد تحديد مرفقات WordPress التي ، كما قلت ، مخزنة في wp_posts ، لذلك هذا هو الجدول الذي سنستخدمه.

من السطر 5 فصاعدًا ، تسمح لنا عبارة WHERE بإضافة شروط لتصفية الصفوف التي نريدها واستبعاد الباقي. يتم فصل كل شرط بين السطور 6 و 14 بواسطة التعليمات AND ، والتي تعمل على الإشارة إلى أنه يجب استيفاء جميع الشروط مرة واحدة. إذا كان الصف لا يفي بجميع شروط WHERE ، فلن يتم إرجاعه في إخراج استعلام SELECT .

يحدد الشرط الأول في السطر 6 أننا نريد الحصول فقط على الصفوف التي تكون قيمتها في عمود post_type هي المرفقات . كما قلت من قبل ، يتم تخزين المنشورات والصفحات في جدول wp_posts أيضًا ، من بين محتويات أخرى. مع هذا الشرط سنحصل فقط على الصور.

لكل مرفق ، يخزن WordPress ما إذا كان قد تم تحميله في سياق صفحة أو منشور باستخدام العمود post_parent . لذلك ، فإن حالة السطر 8 تجعلنا نحصل فقط على المرفقات التي لا يوجد post_parent (أي أنها غير مرتبطة بأي صفحة أو منشور).

من ناحية أخرى ، إذا اخترنا صورة لتكون الصورة المميزة لمنشور أو صفحة ، يقوم WordPress بإنشاء صف بيانات وصفية في الجدول wp_postmeta باستخدام المفتاح _thumbnail_id ، وكقيمة ، فإنه يحدد معرف صورة المرفق . في السطر 10 من الاستعلام ، نحصل على تلك الصور التي لا يظهر معرفها كقيمة لصف من wp_postmeta للمفتاح _thumbnail_id .

يحدد السطر 12 شرطًا لتصفية الصور التي لا يظهر عنوان URL الخاص بها في محتوى المنشورات أو الصفحات. بمعنى ، إذا ظهر عنوان URL للصورة داخل المحتوى ، فإننا نفترض أن الصورة لا تزال مفيدة وبالتالي لا ينبغي حذفها. لاحظ أن عنوان URL للصورة يظهر في عمود guid الفريد العمومي لجدول wp_posts .

أخيرًا ، من المحتمل أنك استخدمت بعض المكونات الإضافية التي تضع عنوان URL للصور داخل صفوف جدول wp_postmeta . تسمح لنا حالة السطر 14 باكتشاف هذه الحالة بالذات.

وهذا كل شيء! سيؤدي تشغيل استعلام SQL هذا إلى إرجاع جميع الصور المزعوم عدم استخدامها في أي مكان في موقعك.

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

إزالة الصور المعزولة في WordPress

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

لحذف مرفق في WordPress ، لدينا الوظيفة wp_delete_attachment التي يمكنك العثور عليها موصوفة هنا. إذا نظرت إلى الوثائق ، فسترى أن هذه الوظيفة تحصل على معرّف المرفق ومعلمة منطقية تشير إلى ما إذا كنت تريد فرض الحذف أو حذفه فقط.

عند استدعاء هذه الوظيفة في WordPress ، ستحذف المرفق وجميع المعلومات المرتبطة به ، بما في ذلك التعليقات المحتملة والمظهر في التصنيفات والبيانات الوصفية ذات الصلة ، والأهم من ذلك ، ملفات الصور المخزنة في مجلد wp-content .

للحصول على قائمة تعليمات wp_delete_attachment التي سنستخدمها في PHP ، علينا فقط تغيير السطر 2 من الاستعلام السابق بحيث يكون ما يُرجعه استعلام SELECT هو سلسلة الأحرف التي تنشئ التعليمات التي نريدها. واحد لكل صف تم إرجاعه بواسطة الاستعلام. انت تستطيع ان ترى النتائج هنا:

تعليمات SQL لاكتشاف الصور غير المستخدمة والحصول على كود PHP الذي يحذفها في WordPress.
تعليمات SQL لاكتشاف الصور غير المستخدمة والحصول على كود PHP الذي يحذفها في WordPress.

الآن عليك فقط نسخ كل هذه التعليمات ولصقها ، على سبيل المثال ، في ملف functions.php من قالبك وزيارة موقع الويب الخاص بك. سيؤدي هذا إلى تنفيذ هذه التعليمات ، وحذف الصور المعزولة من WordPress الخاص بك. بعد ذلك ، قم بإزالة التعليمات الملصقة السابقة لأنها لن تكون ضرورية بعد الآن.

تذكر أن تتحقق من أن موقع الويب الخاص بك لا يزال يعمل بشكل مثالي وأنك لم تحذف الصور ذات الصلة. إذا حدث خطأ ما ، فلا داعي للقلق: يجب أن يكون لديك نسخة احتياطية من قاعدة البيانات ومجلد wp-content ، لذلك يجب أن تكون قادرًا على استعادة موقع الويب الخاص بك إلى حالته السابقة.

إذا كانت لديك مشاكل مع SQL وقاعدة البيانات ، أو لم تفهم أي شيء مما شرحته هنا ، فأخبرني أولاً عن طريق كتابة تعليق أدناه. بعد ذلك ، حاول استخدام مكون إضافي مثل Media Cleaner. يجب أن تكون النتيجة النهائية التي ستحصل عليها مشابهة جدًا لما رأيناه في هذا المنشور.

صورة مميزة بواسطة Gary Chan على Unsplash .