¿Cómo elimino todas las imágenes NO UTILIZADAS de mi directorio de cargas?


20

Estoy tratando de limpiar mis carpetas de carga ya que ahora están comenzando a ocupar demasiado espacio en mi servidor.

He tratado de usar complementos para lograr este fin, como DNUI e imágenes de limpieza, pero estos complementos no funcionan o en el caso de DNUI (que se actualizó recientemente y funciona) no logran los resultados exactos que busco. Esto se debe a que mi sitio usa Woocommerce y un tema que usa imágenes en otros lugares en lugar de solo publicaciones o páginas como encabezados, pies de página y galerías. Parece que WC usa su propio plugin Lightbox incorporado llamado Pretty Photo, que es de donde se llaman las imágenes que DNUI detalla como "no utilizadas".

Sé que es una pregunta, pero me pregunto si alguien podría señalarme en la dirección correcta. No soy desarrollador, por lo que probablemente ni siquiera debería publicar aquí, pero puedo resolver las cosas con tiempo y determinación. He visto secuencias de comandos en este sitio que logran los mismos resultados que el complemento DNUI pero nada que tenga en cuenta otros usos de la imagen (¿si es posible?). Cualquier ayuda sería muy apreciada.


2
Quería hacer lo mismo, pero lo que me preocupa es cómo definir no utilizado . Por ejemplo, un autor puede haber subido imágenes a un borrador de publicación y luego crear otro borrador de publicación, pegar el contenido y publicar esa publicación. Esto significará que las imágenes se asignan al borrador de la publicación, no a la publicación publicada. Tal vez un script que revise todas las publicaciones y verifique las URL de las imágenes para ver qué imágenes se han utilizado y cuáles no. Ojalá tengamos una buena respuesta.
Christine Cooper

Lamentablemente, cuanto más elaborada sea su definición de "no utilizado", es menos probable que encuentre una solución adecuada para ello. ¿De cuántas imágenes (en recuento y tamaño) estás hablando?
Rarst

Hola Rarst, gracias por responder, el sitio ha estado activo durante aproximadamente 5 años y depende mucho de la imagen, con bastantes cambios de tema y complementos. Creo que hay literalmente miles de imágenes sin usar. Y debido a la cantidad de cambios, los tamaños varían enormemente. Ya he usado las miniaturas Force Regenerate para intentar reducir este número y esto ha funcionado hasta cierto punto, pero este complemento a menudo se agota debido a la cantidad. También eleva la CPU en mi servidor a un nivel inviable si lo dejo activado.
G-Olly

Me doy cuenta de la complejidad del problema y, por lo tanto, he estado usando la biblioteca de medios para intentar identificar y eliminar estas imágenes. Desafortunadamente, he descubierto que a menudo también enumera los usados ​​como no utilizados y viceversa, como tal, es un proceso minuciosamente lento, pero ahora me gusta mucho.
G-Olly

1
Si puedo poner mis dos centavos, para algunos tipos de sitios web creo que el problema puede resolverse empíricamente. Para estos sitios, los webcrawlers están visitando cada página del sitio. Del registro de su servidor, obtenga la lista de URL de todas las páginas visitadas. Analice estas páginas usando DOMDocument y obtenga todos los elementos <img> y sus srcs. El problema con este enfoque es si Javascript genera dinámicamente hrefs y srcs.

Respuestas:


4

Eliminar imágenes usando el complemento:

Puede usar este complemento, buscará en su base de datos y verá si la imagen se inserta en cualquier publicación (en contenido, como imagen destacada, en cualquier campo personalizado, en cualquier lugar ...) o como fondo ...

Si la imagen no se usa en ninguna parte, le dará la opción de eliminarla. Obtendrá una lista de todas las imágenes en su sitio que ya no se utilizan, por lo que puede eliminarlas de forma segura.

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

y esto, todavía funciona, incluso está desactualizado

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


Eliminar imágenes manualmente:

También puede buscar en su biblioteca de medios imágenes que no estén conectadas a publicaciones y páginas.

Vaya a la biblioteca de medios y haga clic en "sin adjuntar", se mostrarán todas las imágenes que pueden mostrarse en otras partes de su sitio o no utilizarse.


1
El problema con las imágenes que no se adjuntan a ninguna publicación es que se pueden usar en otro lugar, por ejemplo, si tiene un campo personalizado que usa un cargador de imágenes basado en el cargador de medios nativo de Wordpress, dependiendo de cómo fue el tema codificada, la imagen cargada allí no está adjunta a ninguna publicación (en su base de datos). Sigue siendo una idea válida.
Bruno Monteiro

Voy a segundo @BrunoMonteiro aquí. Es completamente posible tener imágenes que no están adjuntas a una publicación.
BODA82

3

Cron / Tareas programadas y un rastreo de DB es tu amigo

Tendría que ser un complemento, podría asignarle un intervalo wp_cron incluso, no muy diferente al sugerido anteriormente, pero con la adición de verificar cualquier campo similar a 'post_content' (deberá identificarlos, dependiendo de su entorno WP) para el URI / URL de la imagen. Esto tiene el potencial de consumir mucho tiempo / gravar los procesos del sistema; de manera realista, este proceso solo tendría que ejecutarse una vez al día o por semana, suponiendo que no haya otras razones legales / comerciales para ejecutarse con más frecuencia.

una configuración de fuente de DB maestro-esclavo permite que este proceso sea significativamente menos perjudicial para el rendimiento, pero eso está más allá del alcance de esta pregunta, creo.



1

Necesitaría escanear su wp-content/uploadscarpeta en busca de archivos cargados, y luego su base de datos en busca de referencias a esos archivos, y finalmente unirlos. Lo que no se puede combinar debe ser seguro de eliminar.

El escaneo de la base de datos es la parte difícil. La mayoría de las referencias de archivos se almacenan dentro de la Biblioteca de medios a la que puede acceder utilizando las funciones estándar de WordPress / API. Pero, ¿qué sucede con los archivos que se eliminan de la Biblioteca de medios pero que aún se mencionan en las publicaciones? ¿O archivos que otros complementos enlazan de diferentes maneras?

Hice una cantidad considerable de pruebas y de lo que reuní, todas las referencias de archivo se almacenan en formato de texto sin formato (es decir, solo una celda de la tabla igual a la ruta del archivo o URL), formato HTML (es decir, el contenido de una publicación), como datos serializados, o finalmente como objetos JSON. Tendría que escanear toda la base de datos e intentar adivinar qué formato se utiliza dentro de cada celda. Por supuesto, puede haber otras formas exóticas que algunos complementos están utilizando para mantener referencias a sus archivos, pero solo pueden manejarse caso por caso.

En consecuencia, escribí un complemento que automáticamente hace todo eso, ya que lo necesitaba para algunos de los sitios web de nuestros clientes, y lo llamé Theia Upload Cleaner . Me ha funcionado bien, pero, por supuesto, siempre debes hacer una copia de seguridad antes de intentar algo como esto.


Acercamiento agradable ... Me pregunto si usted encontró cualquier problema con él con más y más content / plugins / mensajes añadidos con el tiempo ...
jj_

Hay problemas aquí y allá, sí. Por ejemplo, para algunos complementos, debe excluir ciertas tablas que de lo contrario pueden ralentizar considerablemente las cosas. Intentamos excluir automáticamente mediante ciertas palabras clave, como las tablas de "registro", pero no detecta todos los casos, por supuesto.
liviucmg
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.