# WordPress如何实现在删除文章同时同时删除缩略图及图片附件的方法

*Published:* 2024-03-14
*Author:* 客服001

#### 温馨提醒

如果文章内容或图片资源失效，请留言反馈，我们会及时处理，谢谢

本文最后更新于2024年3月14日，已超过 180天没有更新



WordPress默认是不删除图片的，因此会在媒体库造成大量图片冗余。因此下面说明通过几行代码的简单方式实现在删除文章时自动删除缩略图以及图片附件，这样就不用手动去媒体库寻找并删除，准确而且效率高。

打开/wp-content/themes/ripro/functions.php文件，添加如下代码：

```
#-----------------------------------------------------------------#
# 删除文章时删除图片附件
#-----------------------------------------------------------------#
function delete_post_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_post_and_attachments');
```

注意：如果你的特色图片是用来作封面，并且经常复用的话，请删除 // 删除特色图片 下面的那段代码。