Comment supprimer toutes les images NON UTILISÉES de mon répertoire de téléchargement?

20

J'essaie de nettoyer mes dossiers de téléchargement car ils commencent maintenant à prendre trop de place sur mon serveur.

J'ai essayé d'utiliser des plugins pour atteindre cet objectif, tels que DNUI et Cleanup Images, mais ces plugins sont soit inapplicables ou, dans le cas de DNUI (qui a été mis à jour récemment et fonctionne), n'obtiennent pas les résultats exacts que je recherche. En effet, mon site utilise Woocommerce et un thème qui utilisent tous deux des images dans d'autres endroits plutôt que de simples publications ou pages telles que des en-têtes, des pieds de page et des galeries. Il semble que WC utilise son propre plugin Lightbox intégré appelé Pretty Photo, d'où les images détaillées comme «inutilisées» par DNUI sont appelées.

Je sais que c'est un peu une question mais je me demande si quelqu'un pourrait me diriger dans la bonne direction? Je ne suis pas développeur, donc je ne devrais probablement même pas publier ici, mais je peux arranger les choses avec du temps et de la détermination. J'ai vu des scripts sur ce site qui donnent les mêmes résultats que le plugin DNUI mais rien qui prend en compte d'autres utilisations d'images (si c'est même possible?). Toute aide serait très appréciée.

G-Olly
la source
2
J'ai voulu faire la même chose, mais ce qui m'inquiète, c'est comment définir ce qui n'est pas utilisé . Par exemple, un auteur peut avoir téléchargé des images vers un brouillon de message, puis créé un autre brouillon de message, collé le contenu et ce message est publié. Cela signifie que les images sont affectées au brouillon de l'article et non à l'article publié. Peut-être un script qui examine toutes les publications et vérifie les URL des images pour voir quelles images ont été utilisées et non. J'espère que nous avons une bonne réponse.
Christine Cooper
Malheureusement, plus votre définition de «inutilisé» est élaborée, moins vous y trouverez de solution appropriée. De combien d'images (en nombre et en taille) parlez-vous?
Rarst
Bonjour Rarst, merci d'avoir répondu, le site est actif depuis environ 5 ans maintenant et est très dépendant de l'image, avec pas mal de changements de thème et de plugins. Je pense qu'il y a littéralement des milliers d'images inutilisées. Et en raison de la quantité de changements, les tailles varient énormément. J'ai déjà utilisé les vignettes Force Regenerate pour essayer de réduire ce nombre et cela a fonctionné dans une certaine mesure, mais ce plugin arrive souvent à expiration en raison de la quantité. Cela élève également le processeur de mon serveur à un niveau irréalisable si je le laisse activé.
G-Olly
Je me rends compte de la complexité du problème et j'ai donc utilisé la bibliothèque multimédia pour essayer de localiser et de supprimer ces images. Malheureusement, j'ai constaté qu'il répertorie également souvent les produits non utilisés et vice versa, en tant que tel, c'est un processus extrêmement lent, mais j'ai maintenant le nez sur la meule.
G-Olly
1
Si je peux mettre mes deux sous, pour certains sites Web, je pense que le problème peut être résolu empiriquement. Pour ces sites, les webcrawlers visitent chaque page du site. Dans le journal de votre serveur, obtenez la liste des URL de toutes les pages visitées. Analysez ces pages en utilisant DOMDocument et obtenez tous les éléments <img> et leurs srcs. Le problème avec cette approche est que si Javascript génère dynamiquement des hrefs et des srcs.

Réponses:

4

Suppression d'images à l'aide du plugin:

Vous pouvez utiliser ce plugin, il recherchera votre base de données et cherchera si l'image est insérée dans n'importe quel article (dans le contenu, comme image sélectionnée, dans n'importe quel champ personnalisé, n'importe où ...) ou comme arrière-plan ...

Si l'image n'est utilisée nulle part, elle vous donnera la possibilité de la supprimer. Vous obtiendrez la liste de toutes les images de votre site qui ne sont plus utilisées, vous pouvez donc les supprimer en toute sécurité.

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

et ça marche encore, même c'est dépassé

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


Suppression d'images manuellement:

Vous pouvez également rechercher dans votre bibliothèque multimédia des images qui ne sont pas attachées aux publications et aux pages.

Accédez à la bibliothèque multimédia et cliquez sur le bouton "non attaché", il affichera toutes les images qui peuvent être affichées sur d'autres parties de votre site ou non utilisées.

Référencement avancé
la source
1
Le problème avec les images qui ne sont attachées à aucune publication est qu'elles peuvent être utilisées dans un autre endroit - par exemple si vous avez un champ personnalisé qui utilise un téléchargeur d'images basé sur le téléchargeur natif de médias de Wordpress, selon la façon dont le thème était codée, l'image qui y est téléchargée n'est attachée à aucun message (dans votre base de données). Encore une idée valable.
Bruno Monteiro
Je seconderai ici @BrunoMonteiro. Il est tout à fait possible d'avoir des images qui ne sont pas jointes à un message.
BODA82
3

Cron / Tâches planifiées et une analyse de base de données est votre ami

Il faudrait que ce soit un plugin, vous pouvez même lui affecter un intervalle wp_cron, pas très différent de celui suggéré ci-dessus mais avec l'ajout de la vérification de tout champ similaire à `` post_content '' (vous devrez les identifier, en fonction de votre environnement WP) pour l'URI / URL de l'image. Cela peut potentiellement prendre beaucoup de temps / taxer les processus du système - en réalité, ce processus ne devrait s'exécuter qu'une fois par jour ou par semaine - en supposant qu'il n'y a pas d'autres raisons juridiques / commerciales de s'exécuter plus fréquemment.

une configuration DB maître-esclave de la source permet à ce processus d'être nettement moins préjudiciable aux performances, mais cela dépasse le cadre de cette question, je crois.

Brandt Solovij
la source
2

J'ai essayé le plugin Image Cleanup et c'est le meilleur, mais c'est quand même bien de faire une sauvegarde en premier.

cowboy14
la source
1

Vous devrez analyser votre wp-content/uploadsdossier pour les fichiers téléchargés, puis votre base de données pour les références à ces fichiers, et enfin les faire correspondre. Ce qui ne peut pas être mis en correspondance doit être supprimé en toute sécurité.

L'analyse de la base de données est la partie délicate. La plupart des références de fichiers sont stockées dans la bibliothèque multimédia à laquelle vous pouvez accéder en utilisant les fonctions / API WordPress standard. Mais qu'advient-il des fichiers qui sont supprimés de la médiathèque mais qui sont toujours référencés par des publications? Ou des fichiers auxquels d'autres plugins sont liés de différentes manières?

J'ai fait un nombre considérable de tests et d'après ce que j'ai rassemblé, toutes les références de fichiers sont soit stockées au format texte brut (c'est-à-dire juste une cellule de tableau égale au chemin du fichier ou à l'URL), au format HTML (c'est-à-dire le contenu d'un article), en tant que données sérialisées, ou enfin en tant qu'objets JSON. Vous devrez analyser toute la base de données et essayer de deviner quel format est utilisé dans chaque cellule. Bien sûr, il existe d'autres moyens exotiques que certains plugins utilisent pour conserver les références à leurs fichiers, mais ceux-ci ne peuvent être traités qu'au cas par cas.

Par conséquent, j'ai écrit un plugin qui fait tout cela automatiquement, car j'en avais besoin pour certains des sites Web de nos clients, et je l'ai nommé Theia Upload Cleaner . Cela a bien fonctionné pour moi, mais bien sûr, vous devriez toujours faire une sauvegarde avant d'essayer quelque chose comme ça.

liviucmg
la source
Belle approche ... Je me demande si vous avez rencontré un problème avec de plus en plus de contenu / plugins / messages ajoutés au fil du temps ...
jj_
Il y a des problèmes ici et là, oui. Par exemple, pour certains plugins, vous devez exclure certaines tables qui autrement pourraient ralentir considérablement les choses. Nous essayons d'exclure automatiquement certains mots-clés, comme les tables de "journaux", mais cela n'attrape pas tous les cas bien sûr.
liviucmg