Jak usunąć nieużywane obrazy z biblioteki multimediów w WordPress
Opublikowany: 2019-10-15Kiedy 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:

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 .
