WordPress 删除文章时一并删除相关图片
WordPress 默认在删除文章时不会自动删除文章中的相关图片。要是想同时删除相关图片,可在当前主题的 functions.php 文件中添加以下代码实现,代码会在删除文章时先执行函数内容,删除特色图片以及图片附件。
function delete_thumbnails_and_attachments($post_ID) {
global $wpdb;
// 删除特色图片
$thumbnails = $wpdb->get_results("SELECT * FROM $wpdb->postmeta WHERE meta_key = '_thumbnail_id' AND post_id = $post_ID");
foreach ($thumbnails as $thumbnail) {
wp_delete_attachment($thumbnail->meta_value, true);
}
// 删除图片附件
$attachments = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_parent = $post_ID AND post_type = 'attachment'");
foreach ($attachments as $attachment) {
wp_delete_attachment($attachment->ID, true);
}
// 删除数据库中的相关记录
$wpdb->query("DELETE FROM $wpdb->postmeta WHERE meta_key = '_thumbnail_id' AND post_id = $post_ID");
}
add_action('before_delete_post', 'delete_thumbnails_and_attachments');
此外,图片要是通过“从 URL 插入”添加的,没有关联到文章,删除文章时不会删除图片。还有只删除文章但没有清空回收站也不会删除图片。
『 转载请注明来源及链接 』