Jak usunąć wszystkie NIEUŻYWANE obrazy z mojego katalogu przesyłania?


20

Próbuję wyczyścić foldery przesyłania, ponieważ zaczynają one zajmować zbyt dużo miejsca na moim serwerze.

Próbowałem użyć wtyczek do osiągnięcia tego celu, takich jak DNUI i obrazy czyszczenia, ale te wtyczki są albo niewykonalne, albo w przypadku DNUI (który został niedawno zaktualizowany i działa) nie osiągają dokładnych rezultatów, których szukam. Wynika to z faktu, że moja witryna korzysta z Woocommerce i motywu, które wykorzystują obrazy w innych miejscach, a nie tylko posty lub strony, takie jak nagłówki, stopki i galerie. Wygląda na to, że WC używa własnej wbudowanej wtyczki Lightbox o nazwie Pretty Photo, z której wywoływane są obrazy, które są określone jako DNUI jako „nieużywane”.

Wiem, że to trochę pytanie, ale zastanawiam się, czy ktoś mógłby skierować mnie w dobrym kierunku? Nie jestem programistą, więc prawdopodobnie nie powinienem nawet publikować tutaj, ale mogę wypracować wszystko z czasem i determinacją. Widziałem skrypty na tej stronie, które osiągają takie same wyniki jak wtyczka DNUI, ale nic nie bierze pod uwagę innych zastosowań obrazów (jeśli to w ogóle możliwe?). Każda pomoc byłaby mile widziana.


2
Chciałem zrobić to samo, ale martwi mnie to, jak zdefiniować nieużywane . Na przykład autor mógł załadować obrazy do szkicu, a następnie utworzyć inny szkic, wkleić treść i opublikować ten post. Oznacza to, że obrazy są przypisane do posta szkicu, a nie do postu opublikowanego. Może skrypt, który przegląda wszystkie posty i sprawdza adresy URL obrazów, aby zobaczyć, które obrazy zostały użyte, a które nie. Mamy nadzieję, że mamy dobrą odpowiedź.
Christine Cooper

Niestety, im bardziej szczegółowa jest twoja definicja „nieużywany”, tym mniej prawdopodobne jest, że znajdziesz odpowiednie rozwiązanie. O ilu obrazach i rozmiarach mówisz?
Rarst

Cześć Rarst, dzięki za odpowiedź, strona jest aktywna od około 5 lat i jest bardzo zależna od obrazu, z kilkoma zmianami motywu i wtyczek. Uważam, że istnieją dosłownie tysiące nieużywanych obrazów. A ze względu na ilość zmian rozmiary różnią się ogromnie. Użyłem już Force Regenerate Thumbnails, aby spróbować zmniejszyć tę liczbę i to zadziałało w pewnym stopniu, ale ta wtyczka często wygasa z powodu ilości. Podnosi procesor na moim serwerze do niewykonalnego poziomu, jeśli pozostawię go aktywowanym.
G-Olly,

Zdaję sobie sprawę ze złożoności problemu i dlatego korzystam z biblioteki multimediów, aby zlokalizować i usunąć te obrazy. Niestety, odkryłem, że często używa też list używanych jako nieużywane i na odwrót, ponieważ jest to bardzo powolny proces, ale mam teraz nos do szlifowania.
G-Olly,

1
Jeśli mogę włożyć moje dwa centy, w przypadku niektórych rodzajów stron myślę, że problem można rozwiązać empirycznie. W przypadku tych witryn roboty sieciowe odwiedzają każdą stronę w witrynie. Z dziennika serwera uzyskaj listę adresów URL wszystkich odwiedzanych stron. Analizuj te strony za pomocą DOMDocument i uzyskaj wszystkie elementy <img> i ich srcs. Problem z tym podejściem polega na tym, że JavaScript dynamicznie generuje hrefs i srcs.

Odpowiedzi:


4

Usuwanie zdjęć za pomocą wtyczki:

Możesz użyć tej wtyczki, przeszuka ona Twoją bazę danych i sprawdzi, czy obraz jest wstawiony do dowolnego postu (w treści, jako polecany obraz, w dowolnym niestandardowym polu, w dowolnym miejscu ...) lub jako tło ...

Jeśli obraz nie jest nigdzie używany, daje możliwość jego usunięcia. Otrzymasz listę wszystkich zdjęć z Twojej witryny, które nie są już używane, więc możesz je bezpiecznie usunąć.

https://wordpress.org/plugins/dnui-delete-not-used-image-wordpress/

i to nadal działa, nawet to jest przestarzałe

https://wordpress.org/plugins/wordpress-uploaded-files-cleaner/


Ręczne usuwanie zdjęć:

Możesz także przeszukiwać bibliotekę multimediów w poszukiwaniu obrazów, które nie są dołączone do postów i stron.

Przejdź do biblioteki multimediów i kliknij „nieprzyłączony”, aby wyświetlić wszystkie obrazy, które mogą być wyświetlane w innych częściach witryny lub nieużywane.


1
Problem z obrazami, które nie są dołączone do żadnego postu, polega na tym, że można ich użyć w innym miejscu - na przykład, jeśli masz niestandardowe pole, które korzysta z programu do przesyłania obrazów opartego na rodzimym programie do przesyłania multimediów Wordpress, w zależności od tego, jak motyw był kodowane, obraz tam przesłany nie jest dołączony do żadnego postu (w bazie danych). Wciąż aktualny pomysł.
Bruno Monteiro,

Będę tu drugi @BrunoMonteiro. Całkowicie możliwe jest posiadanie zdjęć, które nie są dołączone do postu.
BODA82

3

Cron / Zaplanowane zadania i przeszukiwanie bazy danych to twój przyjaciel

Musiałby to być wtyczka, możesz przypisać mu nawet przedział wp_cron, nie bardzo w przeciwieństwie do sugerowanego powyżej, ale z dodaniem zaznaczenia dowolnego pola typu „post_content” (musisz je zidentyfikować, w zależności od środowiska WP) dla URI / URL obrazu. Może to być wyjątkowo czasochłonne / obciążające procesy w systemie - realistycznie proces ten musiałby być uruchamiany tylko raz dziennie lub w tygodniu - zakładając, że nie ma innych prawnych / biznesowych powodów, aby uruchamiać się częściej.

konfiguracja źródła master-slave DB pozwala, aby ten proces był znacznie mniej szkodliwy dla wydajności, ale wierzę, że wykracza to poza zakres tego pytania.



1

Trzeba będzie przeskanować wp-content/uploadsfolder w poszukiwaniu przesłanych plików, a następnie bazę danych w celu znalezienia odniesień do tych plików, a na koniec dopasować je razem. To, czego nie można dopasować, powinno być bezpieczne do usunięcia.

Skanowanie bazy danych jest trudną częścią. Większość odniesień do plików jest przechowywana w bibliotece multimediów, do której można uzyskać dostęp za pomocą standardowych funkcji / interfejsu WordPress. Ale co dzieje się z plikami, które są usuwane z biblioteki multimediów, ale wciąż zawierają odniesienia do postów? Lub pliki, do których inne wtyczki prowadzą na różne sposoby?

Zrobiłem znaczną liczbę testów i z tego, co zebrałem, wszystkie odwołania do plików są przechowywane w formacie zwykłego tekstu (tj. Tylko komórka tabeli równa ścieżce pliku lub adresowi URL), w formacie HTML (tj. Treść postu), jako dane serializowane lub wreszcie jako obiekty JSON. Będziesz musiał przeskanować całą bazę danych i spróbować zgadnąć, jaki format jest używany w każdej komórce. Oczywiście mogą istnieć inne egzotyczne sposoby, w których niektóre wtyczki używają do przechowywania odniesień do swoich plików, ale można je obsługiwać tylko w poszczególnych przypadkach.

W związku z tym napisałem wtyczkę, która automatycznie to robi, ponieważ potrzebowałem jej na niektórych stronach internetowych naszych klientów i nazwałem ją Theia Upload Cleaner . Działa to dla mnie dobrze, ale oczywiście zawsze powinieneś wykonać kopię zapasową przed wypróbowaniem czegoś takiego.


Ładne podejście ... Zastanawiam się, czy napotkałeś jakiś problem z coraz większą ilością treści / wtyczek / postów dodawanych z czasem ...
jj_

Są problemy tu i tam, tak. Na przykład w przypadku niektórych wtyczek należy wykluczyć niektóre tabele, które w przeciwnym razie mogą znacznie spowolnić działanie. Staramy się automatycznie wykluczać według określonych słów kluczowych, takich jak tabele „log”, ale oczywiście nie obejmuje to wszystkich przypadków.
liviucmg
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.