Como excluo todas as imagens NÃO USADAS do meu diretório de envios?

20

Estou tentando limpar minhas pastas de uploads, pois agora elas estão começando a ocupar muito espaço no meu servidor.

Tentei usar plug-ins para atingir esse objetivo, como DNUI e imagens de limpeza, mas esses plugins são impraticáveis ​​ou, no caso do DNUI (que foi atualizado recentemente e funciona), não atingem os resultados exatos que busco. Isso ocorre porque meu site usa Woocommerce e um tema que usa imagens em outros lugares, em vez de apenas postagens ou páginas como cabeçalhos, rodapés e galerias. Parece que o WC usa seu próprio plug-in Lightbox, chamado Pretty Photo, que é onde as imagens que são detalhadas como "não utilizadas" pela DNUI são chamadas.

Eu sei que é um pouco de pedir, mas eu estou querendo saber se alguém poderia me apontar na direção certa? Como não sou desenvolvedor, provavelmente não deveria postar aqui, mas posso resolver as coisas com tempo e determinação. Eu vi scripts neste site que alcançam os mesmos resultados que o plug-in DNUI, mas nada que leve em consideração outros usos de imagem (se é que isso é possível?). Qualquer ajuda seria muito apreciada.

G-Olly
fonte
2
Eu queria fazer a mesma coisa, mas o que me preocupa é como definir não utilizado . Por exemplo, um autor pode ter carregado imagens em uma postagem de rascunho e, em seguida, criado outra postagem de rascunho, colado o conteúdo e essa postagem é publicada. Isso significa que as imagens são atribuídas à postagem de rascunho, não à postagem publicada. Talvez um script que analise todas as postagens e verifique os URLs das imagens para ver quais imagens foram usadas e não. Espero que tenhamos uma boa resposta.
Christine Cooper
Infelizmente, quanto mais elaborada for sua definição de "não utilizado", menor a probabilidade de você encontrar a solução adequada. De quantas imagens (em número e tamanho) você está falando?
Rarst
Olá Rarst, obrigado por responder, o site está ativo há cerca de 5 anos e é muito dependente de imagem, com algumas alterações de tema e plugins. Acredito que existem literalmente milhares de imagens não utilizadas. E, devido à quantidade de alterações, os tamanhos variam tremendamente. Eu já usei o Force Regenerate Thumbnails para tentar reduzir esse número e isso funcionou até certo ponto, mas esse plug-in geralmente atinge o tempo limite devido à quantidade. Ele também eleva a CPU do meu servidor para um nível impraticável se eu deixá-lo ativado.
G-Olly
Percebo a complexidade do problema e, portanto, tenho usado a biblioteca de mídia para tentar identificar e excluir essas imagens. Infelizmente, descobri que muitas vezes também lista as usadas como não utilizadas e vice-versa; portanto, é um processo meticulosamente lento, mas agora estou com o nariz na pedra de amolar.
G-Olly
11
Se eu puder colocar meus dois centavos, em alguns sites, acho que o problema pode ser resolvido empiricamente. Para esses sites, os webcrawlers estão visitando todas as páginas do site. No log do servidor, obtenha a lista de URLs de todas as páginas visitadas. Analise essas páginas usando DOMDocument e obtenha todos os elementos <img> e seus srcs. O problema dessa abordagem é se o Javascript gera dinamicamente hrefs e srcs.

Respostas:

4

Excluindo imagens usando o plug-in:

Você pode usar este plugin, ele pesquisará seu banco de dados e verificará se a imagem está inserida em qualquer post (no conteúdo, como imagem em destaque, em qualquer campo personalizado, em qualquer lugar ...) ou como pano de fundo ...

Se a imagem não for usada em nenhum lugar, você terá a opção de excluí-la. Você obterá uma lista de todas as imagens no seu site que não serão mais usadas, para que você possa excluí-las com segurança.

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

e isso, ainda funciona, mesmo desatualizado

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


Excluindo imagens manualmente:

Você também pode procurar na biblioteca de mídia imagens desassociadas de postagens e páginas.

Vá para a biblioteca de mídia e clique no botão "desanexado". Ele exibirá todas as imagens que podem ser exibidas em outras partes do site ou não utilizadas.

SEO avançado
fonte
11
O problema com imagens que não estão anexadas a nenhuma postagem é que elas podem ser usadas em outro local - por exemplo, se você tiver um campo personalizado que use um carregador de imagens baseado no carregador de mídia nativo do Wordpress, dependendo de como o tema foi codificada, a imagem carregada não está anexada a nenhuma postagem (no seu banco de dados). Ainda é uma ideia válida.
Bruno Monteiro
Eu vou segundo @BrunoMonteiro aqui. É perfeitamente possível ter imagens que não estejam anexadas a uma postagem.
BOTA82 # 11/15
3

Tarefas Cron / agendadas e um rastreamento de banco de dados é seu amigo

Ele precisaria ser um plugin, você pode atribuir um intervalo wp_cron mesmo, não muito diferente do sugerido acima, mas com a adição de verificar qualquer campo semelhante ao 'post_content' (você precisará identificá-los, dependendo do ambiente do WP) para o URI / URL da imagem. Isso tem o potencial de ser extremamente demorado / tributar os processos do sistema - realisticamente, esse processo precisaria ser executado apenas uma vez por dia ou semana - assumindo que não há outras razões legais / comerciais para executar com mais frequência.

uma configuração de fonte mestre-escravo do banco de dados permite que esse processo seja significativamente menos prejudicial ao desempenho, mas isso está além do escopo desta pergunta, acredito.

Brandt Solovij
fonte
2

Eu tentei o plugin Image Cleanup e é o melhor, mas ainda é bom fazer um backup primeiro.

cowboy14
fonte
1

Você precisaria verificar sua wp-content/uploadspasta em busca de arquivos enviados e, em seguida, seu banco de dados em busca de referências a esses arquivos, e finalmente combiná-los. O que não pode ser correspondido deve ser seguro para remover.

A verificação do banco de dados é a parte complicada. A maioria das referências de arquivo é armazenada na Biblioteca de Mídia, que você pode acessar usando as funções / API padrão do WordPress. Mas o que acontece com os arquivos removidos da Biblioteca de Mídia, mas ainda referenciados por postagens? Ou arquivos aos quais outros plugins se vinculam de maneiras diferentes?

Fiz um número considerável de testes e, pelo que reuni, todas as referências de arquivo são armazenadas em formato de texto sem formatação (ou seja, apenas uma célula da tabela igual ao caminho ou URL do arquivo), formato HTML (ou seja, o conteúdo de uma postagem), como dados serializados ou, finalmente, como objetos JSON. Você precisaria verificar o banco de dados inteiro e tentar adivinhar qual formato é usado em cada célula. Obviamente, pode haver outras maneiras exóticas que alguns plug-ins estão usando para manter referências a seus arquivos, mas elas só podem ser tratadas caso a caso.

Consequentemente, escrevi um plugin que faz tudo isso automaticamente, já que eu precisava dele para alguns dos sites de nossos clientes e o nomeei Theia Upload Cleaner . Funcionou bem para mim, mas é claro que você sempre deve fazer um backup antes de tentar algo assim.

liviucmg
fonte
Agradável abordagem ... Gostaria de saber se você encontrou qualquer problema com ele com mais e mais conteúdo / plugins / posts adicionados ao longo do tempo ...
jj_
Há problemas aqui e ali, sim. Por exemplo, para alguns plugins, você precisa excluir determinadas tabelas que, de outra forma, podem atrasar consideravelmente as coisas. Tentamos excluir automaticamente determinadas palavras-chave, como tabelas "log", mas isso não captura todos os casos, é claro.
liviucmg