Lorsque vous gérez un site WordPress, vous pouvez rencontrer des situations où vous devez supprimer plusieurs articles à la fois. Cependant, WordPress ne supprime pas automatiquement les pièces jointes ou les images mises en avant associées à ces articles. Cela peut entraîner un encombrement inutile dans votre bibliothèque de médias et l’utilisation de stockage.
Dans cet article, nous vous montrerons comment supprimer automatiquement les pièces jointes et les images mises en avant lors de la suppression d’articles dans WordPress à l’aide d’un simple extrait de code.
Comprendre le Problème
Par défaut, lorsque vous supprimez un article dans WordPress, ses pièces jointes (telles que des images, des PDF ou d’autres médias) et les images mises en avant restent dans la bibliothèque de médias. Cela peut poser problème pour des nettoyages à grande échelle ou lorsque vous souhaitez vous assurer que toutes les données associées sont supprimées avec l’article.
La Solution
Pour résoudre ce problème, vous pouvez ajouter une fonction personnalisée à votre site WordPress qui supprime automatiquement toutes les pièces jointes et l’image mise en avant chaque fois qu’un article est supprimé.
Guide Étape par Étape
- Ouvrez le répertoire de votre thème WordPress et localisez le fichier
functions.php. Alternativement, vous pouvez créer un plugin personnalisé pour ce code. - Ajoutez l’extrait de code suivant au fichier :
function delete_post_attachments($post_id) {
// Vérifiez si l'élément supprimé est un article
if (get_post_type($post_id) !== 'post') {
return;
}
// Obtenez toutes les pièces jointes liées à l'article
$attachments = get_attached_media('', $post_id);
foreach ($attachments as $attachment) {
wp_delete_attachment($attachment->ID, true);
}
// Obtenez et supprimez l'image mise en avant de l'article
$featured_image_id = get_post_thumbnail_id($post_id);
if ($featured_image_id) {
wp_delete_attachment($featured_image_id, true);
}
}
add_action('before_delete_post', 'delete_post_attachments');
Cette fonction utilise le hook before_delete_post pour s’exécuter chaque fois qu’un article est supprimé. Elle supprime :
- Toutes les pièces jointes médias associées à l’article.
- L’image mise en avant de l’article (si définie).
Comment Ça Marche
La fonction vérifie si l’élément supprimé est un article. Si c’est le cas, elle récupère toutes les pièces jointes liées à l’article en utilisant get_attached_media() et les supprime avec wp_delete_attachment(). De plus, elle supprime l’image mise en avant en utilisant get_post_thumbnail_id().
Choses à Garder à l’Esprit
- Cette solution fonctionne spécifiquement pour les articles. Si vous souhaitez inclure d’autres types de publications, vous pouvez modifier la condition dans la fonction.
- Assurez-vous de tester cette fonctionnalité sur un environnement de test avant de l’appliquer à un site en direct.
- Sauvegardez votre base de données et vos fichiers pour éviter toute perte de données accidentelle.
Conclusion
Avec cet extrait de code simple, vous pouvez rationaliser votre processus de gestion des articles et vous assurer qu’aucune pièce jointe ou image mise en avant inutile n’est laissée lorsque vous supprimez des articles. Cela est particulièrement utile pour les suppressions en masse ou les nettoyages de sites à grande échelle.
Nous espérons que ce guide vous aidera à garder votre site WordPress organisé et efficace. Si vous avez des questions ou avez besoin d’une assistance supplémentaire, n’hésitez pas à nous contacter !