วิธีลบภาพที่ไม่ได้ใช้ออกจากไลบรารีสื่อของคุณใน 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