Cara Menghapus Gambar yang Tidak Digunakan Dari Pustaka Media Anda di WordPress

Diterbitkan: 2019-10-15

Ketika website Anda sudah berjalan beberapa lama, wajar jika ada hal-hal yang sudah tidak diperlukan lagi namun tetap ada. Salah satu contoh yang paling menjengkelkan adalah gambar yang tidak lagi digunakan tetapi terus menghabiskan ruang di WordPress Anda.

Gambar-gambar ini yang tidak lagi Anda gunakan di posting atau halaman Anda, atau di jenis konten lain apa pun yang sudah usang, tetap dihosting di server Anda, membuang-buang sumber daya dan ruang penyimpanan. Hal terbaik yang dapat Anda lakukan dengan mereka adalah menghilangkannya jika Anda tidak akan menggunakannya lagi. Tetapi bagaimana Anda bisa menemukannya dan memastikan mereka tidak digunakan di mana pun? Mari kita lihat…

Sebelum memulai

Hal pertama yang harus dilakukan jika Anda ingin menghapus gambar dari WordPress yang tidak lagi digunakan adalah membuat salinan cadangan situs web Anda, termasuk file media di dalam folder wp-content .

Meskipun gambar yang Anda unggah ke perpustakaan media disimpan dalam wp-content/uploads/ , ada kemungkinan jika Anda menggunakan plugin untuk mengunggah file, mereka akan berakhir di folder yang berbeda. Oleh karena itu, pastikan Anda memiliki salinan cadangan database WordPress dan semua file di dalam folder wp-content dan bukan hanya wp-content/uploads .

Setelah Anda membuat cadangan, kami dapat melanjutkan dengan langkah-langkah berikut ...

Deteksi Gambar Yatim di WordPress

Ada beberapa cara untuk mendeteksi gambar yang tidak lagi digunakan dalam konten apa pun di situs WordPress Anda. Yang paling efektif adalah mencarinya di database WordPress.

Untuk ini kita harus tahu bahwa gambar yang Anda unggah ke perpustakaan media WordPress disimpan di tabel wp_posts seolah-olah itu adalah posting atau halaman. Yang membedakannya dengan konten lain yang disimpan dalam tabel ini adalah memiliki nilai lampiran di kolom post_type .

Omong-omong, pemberitahuan penting: jika Anda tidak memiliki pengetahuan tentang basis data, sebaiknya Anda berhati-hati dengan apa yang Anda lakukan mulai sekarang, simpan cadangan basis data, dan lihat artikel Codex WordPress ini di mana mereka menjelaskan semuanya di lebih detail.

Dimana kita? Oh ya: kami ingin menemukan semua gambar yang tidak digunakan di WordPress Anda. Ini lebih mudah untuk didefinisikan daripada dilakukan, tetapi jangan khawatir, kami akan mencoba menjelaskannya langkah demi langkah dan dengan cara yang sederhana.

Yang harus kita lakukan adalah menulis kueri dalam bahasa SQL untuk dijalankan di database MySQL WordPress. Jika Anda tidak tahu cara mengakses database situs web Anda, hubungi penyedia hosting Anda untuk petunjuk tentang cara melakukannya. Jika mereka memberi Anda akses ke phpMyAdmin, itu juga OK

Kueri yang perlu Anda jalankan adalah:

Mari kita hancurkan.

Hal pertama yang kita lakukan adalah memulai dengan pernyataan SELECT untuk memilih semua baris tertentu dari tabel tertentu. Di baris 2, tanda bintang berarti kita menginginkan "semua kolom" di setiap baris.

Baris 3 dan 4 menunjukkan tabel yang kita minati. Dalam hal ini, kita ingin memilih lampiran WordPress yang, seperti yang saya katakan, disimpan di wp_posts , jadi itulah tabel yang akan kita gunakan.

Dari baris 5 dan seterusnya, pernyataan WHERE memungkinkan kita menambahkan kondisi untuk memfilter baris yang kita inginkan dan mengecualikan sisanya. Setiap kondisi antara baris 6 dan 14 dipisahkan oleh instruksi AND , yang berfungsi untuk menunjukkan bahwa semua kondisi harus dipenuhi sekaligus. Jika sebuah baris tidak memenuhi semua kondisi WHERE , baris tersebut tidak akan dikembalikan dalam output kueri SELECT .

Kondisi pertama di baris 6 mendefinisikan bahwa kita hanya ingin mendapatkan baris yang nilainya di kolom post_type adalah attachment . Seperti yang saya katakan sebelumnya, posting dan halaman disimpan di tabel wp_posts juga, di antara konten lainnya. Dengan kondisi ini kita hanya akan mendapatkan gambar.

Untuk setiap lampiran , WordPress menyimpan apakah itu diunggah dalam konteks halaman atau posting menggunakan kolom post_parent . Oleh karena itu, kondisi baris 8 membuat kita hanya mendapatkan lampiran yang post_parent -nya tidak ada (yaitu, tidak terikat ke halaman atau postingan mana pun).

Di sisi lain, jika kita memilih gambar untuk menjadi gambar unggulan dari posting atau halaman, WordPress membuat baris metadata di tabel wp_postmeta dengan kunci _thumbnail_id dan, sebagai nilai, ia menetapkan pengidentifikasi gambar lampiran . Pada baris 10 dari kueri kami mendapatkan gambar-gambar yang pengenalnya tidak muncul sebagai nilai dari baris wp_postmeta untuk kunci _thumbnail_id .

Baris 12 mendefinisikan kondisi untuk memfilter gambar yang URL-nya tidak muncul di konten posting atau halaman. Artinya, jika URL gambar muncul di dalam konten, kami menganggap gambar tersebut masih berguna dan oleh karena itu tidak boleh dihapus. Perhatikan bahwa URL gambar muncul di kolom wp_posts guid

Terakhir, mungkin Anda menggunakan beberapa plugin yang menempatkan URL gambar di dalam baris tabel wp_postmeta . Kondisi baris 14 memungkinkan kita untuk mendeteksi kasus khusus ini.

Dan itu saja! Menjalankan kueri SQL ini akan mengembalikan semua gambar yang diduga tidak digunakan di mana pun di situs Anda.

Ingatlah bahwa saat mencari gambar yatim piatu, mungkin ada kesalahan positif. Yaitu, gambar yang ditandai sebagai tidak digunakan tetapi sebenarnya sedang digunakan di WordPress. Ini karena Anda dapat menggunakan plugin yang menentukan tabel mereka sendiri dan menyimpan referensi ke gambar Anda di sana. Jika ini kasus Anda, Anda harus menyesuaikan kueri dengan menambahkan ketentuan tambahan untuk mencakup kasus ini.

Hapus Gambar Yatim di WordPress

Sekarang kita memiliki gambar yang berpotensi tidak digunakan di WordPress, kita harus melihat hasilnya dan melihat apakah semua gambar yang kita daftarkan sedang digunakan atau tidak. Bergantung pada apa yang kami temukan, kami dapat menyaring kueri dengan menambahkan lebih banyak kondisi seperti yang kami katakan sebelumnya. Jika semuanya tampak benar, Anda dapat melanjutkan.

Untuk menghapus lampiran di WordPress, kami memiliki fungsi wp_delete_attachment yang dapat Anda temukan dijelaskan di sini. Jika Anda melihat dokumentasinya, Anda akan melihat bahwa fungsi ini mendapatkan pengidentifikasi lampiran dan parameter Boolean yang menunjukkan apakah Anda ingin memaksa penghapusan atau hanya membuangnya.

Saat Anda memanggil fungsi ini di WordPress, itu akan menghapus lampiran dan semua informasi terkait, termasuk kemungkinan komentar, tampilan dalam taksonomi, metadata terkait dan, yang paling penting, file gambar yang disimpan di folder wp-content .

Untuk mendapatkan daftar instruksi wp_delete_attachment yang akan kita gunakan di PHP, kita hanya perlu mengubah baris 2 dari query sebelumnya sehingga yang dikembalikan oleh query SELECT adalah string karakter yang mengkonstruksi instruksi yang kita inginkan. Satu untuk setiap baris yang dikembalikan oleh kueri. Anda dapat melihat hasilnya di sini:

Instruksi SQL untuk mendeteksi gambar yang tidak digunakan dan mendapatkan kode PHP yang menghapusnya di WordPress.
Instruksi SQL untuk mendeteksi gambar yang tidak digunakan dan mendapatkan kode PHP yang menghapusnya di WordPress.

Sekarang Anda hanya perlu menyalin semua instruksi ini dan menempelkannya, misalnya, di file functions.php tema Anda dan kunjungi situs web Anda. Ini akan menyebabkan instruksi ini dieksekusi, menghapus gambar yatim dari WordPress Anda. Setelah itu, hapus instruksi yang ditempel sebelumnya karena tidak lagi diperlukan.

Ingatlah untuk memeriksa apakah situs web Anda masih berfungsi dengan baik dan Anda belum menghapus gambar yang relevan. Jika terjadi kesalahan, jangan khawatir: Anda harus memiliki cadangan database dan folder wp-content Anda, sehingga Anda dapat memulihkan situs web Anda ke keadaan sebelumnya.

Jika Anda memiliki masalah dengan SQL dan database, atau Anda tidak mengerti apa pun yang telah saya jelaskan di sini, beri tahu saya terlebih dahulu dengan menulis komentar di bawah. Setelah itu, coba gunakan plugin seperti Media Cleaner. Hasil akhir yang akan Anda dapatkan harus sangat mirip dengan apa yang telah kita lihat di posting ini.

Gambar unggulan oleh Gary Chan di Unsplash .