Jak usunąć nieużywane obrazy z biblioteki multimediów w WordPress

Opublikowany: 2019-10-15

Kiedy Twoja witryna działa już od jakiegoś czasu, to normalne, że są rzeczy, które nie są już potrzebne, ale nadal istnieją. Jednym z najbardziej irytujących przykładów są obrazy, które nie są już używane, ale nadal zajmują miejsce w Twoim WordPressie.

Te obrazy, których już nie używasz w swoich postach lub stronach, lub w jakimkolwiek innym rodzaju treści, która stała się przestarzała, pozostają hostowane na twoim serwerze, marnując zasoby i przestrzeń dyskową. Najlepszą rzeczą, jaką możesz z nimi zrobić, to wyeliminować je, jeśli nie zamierzasz ich ponownie używać. Ale jak je znaleźć i upewnić się, że nie są nigdzie używane? Zobaczmy…

Przed rozpoczęciem

Pierwszą rzeczą do zrobienia, jeśli chcesz usunąć z WordPressa obrazy, które nie są już używane, jest wykonanie kopii zapasowej witryny, w tym plików multimedialnych w folderze wp-content .

Chociaż obrazy, które przesyłasz do biblioteki multimediów, są przechowywane w wp-content/uploads/ , możliwe jest, że jeśli użyjesz wtyczki do przesłania plików, trafią one do innego folderu. Dlatego upewnij się, że masz kopię zapasową bazy danych WordPress i wszystkich plików w folderze wp-content , a nie tylko wp-content/uploads .

Po utworzeniu kopii zapasowej możemy kontynuować następujące kroki…

Wykryj obrazy osierocone w WordPress

Istnieje kilka sposobów wykrywania obrazów, które nie są już używane w żadnej treści w witrynie WordPress. Najskuteczniejsze jest przeszukanie ich w bazie danych WordPressa.

W tym celu musimy wiedzieć, że obrazy przesłane do biblioteki multimediów WordPress są przechowywane w tabeli wp_posts tak, jakby były postem lub stroną. Tym, co odróżnia je od innych treści przechowywanych w tej tabeli, jest to, że mają wartość załącznika w kolumnie post_type .

Przy okazji, ważna uwaga: jeśli nie masz wiedzy na temat baz danych, najlepiej, abyś od teraz uważał na to, co robisz, zachowaj kopię zapasową bazy danych i zapoznaj się z tym artykułem WordPress Codex, w którym wszystko wyjaśnia więcej szczegółów.

Gdzie byliśmy? O tak: chcemy znaleźć wszystkie te obrazy, które nie są używane w Twoim WordPressie. Łatwiej to zdefiniować niż zrobić, ale nie martw się, postaramy się wyjaśnić to krok po kroku iw prosty sposób.

Wystarczy napisać zapytanie w języku SQL, które zostanie uruchomione w bazie danych MySQL WordPress. Jeśli nie wiesz, jak uzyskać dostęp do bazy danych witryny, skontaktuj się z dostawcą usług hostingowych, aby uzyskać instrukcje, jak to zrobić. Jeśli dają dostęp do phpMyAdmina, to też jest OK

Zapytanie, które musisz uruchomić to:

Rozbijmy to.

Pierwszą rzeczą, którą robimy, jest rozpoczęcie od instrukcji SELECT , aby wybrać wszystkie określone wiersze określonej tabeli. W wierszu 2 gwiazdka oznacza, że ​​w każdym rzędzie chcemy mieć „wszystkie kolumny”.

Wiersze 3 i 4 wskazują tabele, które nas interesują. W tym przypadku chcemy wybrać załączniki WordPress, które, jak powiedziałem, są przechowywane w wp_posts , więc tej tabeli będziemy używać.

Od linii 5 instrukcja WHERE pozwala nam dodawać warunki w celu filtrowania żądanych wierszy i wykluczenia pozostałych. Każdy warunek pomiędzy liniami 6 i 14 jest oddzielony instrukcją AND , która służy do wskazania, że ​​wszystkie warunki muszą być spełnione jednocześnie. Jeśli wiersz nie spełnia wszystkich warunków WHERE , nie zostanie zwrócony w wyniku zapytania SELECT .

Pierwszy warunek w linii 6 określa, że ​​chcemy uzyskać tylko te wiersze, których wartością w kolumnie post_type jest attachment . Jak powiedziałem wcześniej, posty i strony są również przechowywane w tabeli wp_posts , między innymi. Pod tym warunkiem otrzymamy tylko obrazy.

Dla każdego załącznika WordPress przechowuje informację, czy został on przesłany w kontekście strony, czy postu, używając kolumny post_parent . Dlatego warunek w wierszu 8 sprawia, że ​​otrzymujemy tylko te załączniki , których post_parent nie istnieje (to znaczy nie są powiązane z żadną stroną lub postem).

Z drugiej strony, jeśli wybierzemy obraz, który ma być polecanym obrazem posta lub strony, WordPress tworzy wiersz metadanych w tabeli wp_postmeta z kluczem _thumbnail_id i jako wartość ustawia identyfikator obrazu załącznika . W wierszu 10 zapytania otrzymujemy te obrazy, których identyfikator nie występuje jako wartość wiersza wp_postmeta dla klucza _thumbnail_id .

Linia 12 określa warunek filtrowania obrazów, których adres URL nie pojawia się w treści postów lub stron. Oznacza to, że jeśli adres URL obrazu pojawia się w treści, zakładamy, że obraz jest nadal przydatny i dlatego nie należy go usuwać. Zauważ, że adres URL obrazu pojawia się w kolumnie guid tabeli wp_posts .

Wreszcie możliwe, że użyłeś jakiejś wtyczki, która umieszcza adresy URL obrazów w wierszach tabeli wp_postmeta . Stan linii 14 pozwala nam wykryć ten konkretny przypadek.

I to wszystko! Uruchomienie tego zapytania SQL zwróci wszystkie obrazy, które rzekomo nie są używane nigdzie w Twojej witrynie.

Pamiętaj, że podczas wyszukiwania obrazów osieroconych mogą pojawić się fałszywe alarmy. Oznacza to, że obrazy oznaczone jako nieużywane, ale w rzeczywistości są używane w WordPress. Dzieje się tak, ponieważ możesz używać wtyczek, które definiują własne tabele i przechowują tam odniesienia do twoich obrazów. Jeśli tak jest w Twoim przypadku, musisz dostosować zapytanie, dodając dodatkowe warunki, aby uwzględnić te przypadki.

Usuń osierocone obrazy w WordPress

Teraz, gdy mamy już obrazy, które potencjalnie nie są używane w WordPressie, powinniśmy spojrzeć na wyniki i sprawdzić, czy wszystkie wymienione przez nas obrazy są używane, czy nie. W zależności od tego, co znajdziemy, możemy doprecyzować zapytanie, dodając więcej warunków, jak powiedzieliśmy wcześniej. Jeśli wszystko wydaje się w porządku, możesz przejść dalej.

Aby usunąć załącznik w WordPressie mamy funkcję wp_delete_attachment , którą znajdziesz opisaną tutaj. Jeśli zajrzysz do dokumentacji, zobaczysz, że ta funkcja pobiera identyfikator załącznika i parametr logiczny wskazujący, czy chcesz wymusić usunięcie, czy po prostu go skasować.

Wywołanie tej funkcji w WordPress spowoduje usunięcie załącznika i wszystkich powiązanych z nim informacji, w tym ewentualnych komentarzy, wyglądu w taksonomii, powiązanych metadanych i, co najważniejsze, plików graficznych przechowywanych w folderze wp-content .

Aby uzyskać listę instrukcji wp_delete_attachment , których będziemy używać w PHP, wystarczy zmienić wiersz 2 poprzedniego zapytania tak, aby zapytanie SELECT zwracało ciąg znaków, który konstruuje żądaną instrukcję. Po jednym na każdy wiersz zwrócony przez zapytanie. Wyniki możesz zobaczyć tutaj:

Instrukcja SQL do wykrywania nieużywanych obrazów i uzyskania kodu PHP, który usuwa je w WordPressie.
Instrukcja SQL do wykrywania nieużywanych obrazów i uzyskania kodu PHP, który usuwa je w WordPressie.

Teraz wystarczy skopiować wszystkie te instrukcje i wkleić je na przykład w pliku functions.php swojego motywu i odwiedzić swoją witrynę. Spowoduje to wykonanie tych instrukcji, usuwając osierocone obrazy z Twojego WordPressa. Następnie usuń poprzednio wklejone instrukcje, ponieważ nie będą już potrzebne.

Pamiętaj, aby sprawdzić, czy Twoja witryna nadal działa bez zarzutu i czy nie usunąłeś odpowiednich obrazów. Jeśli coś poszło nie tak, nie martw się: powinieneś mieć kopię zapasową bazy danych i folderu wp-content , więc powinieneś być w stanie przywrócić swoją witrynę do poprzedniego stanu.

Jeśli masz problemy z SQL i bazą danych lub nie rozumiesz niczego z tego, co tutaj wyjaśniłem, najpierw daj mi znać, pisząc komentarz poniżej. Następnie spróbuj użyć wtyczki, takiej jak Media Cleaner. Ostateczny wynik, który otrzymasz, musi być bardzo podobny do tego, który widzieliśmy w tym poście.

Polecane zdjęcie Gary'ego Chana na Unsplash .