Even if there is a hook (I suppose there is of course), if it has not run, is there a way to go through all avatars and remove those from non existing users? Is there a recommended way to parse and delete all unused avatars?
Salut ! Effectivement, BuddyPress ne supprime pas automatiquement les avatars des utilisateurs lorsque leurs comptes sont supprimés. Cependant, tu peux gérer ce problème en ajoutant un peu de code personnalisé à ton thème ou dans un plugin spécifique. Voici comment tu pourrais procéder pour supprimer les avatars lors de la suppression des comptes d’utilisateurs :
1- Crée un hook dans ton fichier functions.php ou dans un plugin spécifique :
Utilise l’action bp_remove_user ou wpmu_delete_user, delete_user selon la configuration de ton réseau si tu es en multisite ou pas.
2- Ajoute le code suivant pour supprimer l’avatar lorsqu’un utilisateur est supprimé :
function remove_user_avatar_on_delete($user_id) {
// Vérifie si l'utilisateur a un avatar
$avatar_path = bp_core_fetch_avatar(array(
'item_id' => $user_id,
'html' => false,
'type' => 'full',
'no_grav' => true
));
if ($avatar_path) {
// Supprime le fichier avatar
@unlink($avatar_path);
}
}
// Hook pour la suppression de l'utilisateur
add_action('delete_user', 'remove_user_avatar_on_delete');
add_action('wpmu_delete_user', 'remove_user_avatar_on_delete');
add_action('bp_remove_user', 'remove_user_avatar_on_delete');
Note : Ce code utilise @unlink pour supprimer le fichier, qui supprime silencieusement le fichier sans afficher d’erreur si le fichier n’existe pas ou ne peut être supprimé. Assure-toi que le chemin de l’avatar est correctement récupéré.
3- Teste le code : Avant de mettre ce code en production, teste-le dans un environnement de développement pour t’assurer qu’il fonctionne comme attendu sans effets secondaires.
Cela devrait aider à gérer le problème des fichiers d’avatar résiduels. Si tu as besoin de plus d’informations sur la fonction ou sur d’autres façons de gérer les fichiers avec WordPress et BuddyPress, n’hésite pas à demander !
Par curiosité: est-ce que cette réponse a été nourrie par ChatGPT?
Ça y ressemble vraiment, d’autant qu’après plus d’investigations je viens de trouver que BuddyPress est en effet censé supprimer l’avatar, grâce à deux fonctions : bp_core_delete_avatar_on_user_delete
et bp_core_delete_avatar_on_delete_user
Mon problème vient d’un manque de retour erreurs de la part de BuddyPress : c’était un conflit avec un autre plugin qui avait override les emplacements où les avatars sont stockés. Je suis en train de travailler à une solution. Ce serait vraiment top si BuddyPress retournait une erreur dans le cas où la tentative de suppression de l’avatar était ratée. Ça permettrait de s’en rendre compte rapidement.
Did this solution work for you regarding deleting unused profile images? Also, could you tell me, with 50,000 users, what kind of hosting platform are you using? Are you having any issues with storage other than the avatar images?