WordPress删除文章时同时删除图片附件

2017-02-10 710 ℃ 阅读时间约2分钟
  • 提示:右边的搜索可以通过必应,谷歌,百度,知乎查找你想要的东西,影视可以查找你想看的视频

    2021/04/28 18:24

WordPress 删除文章时,文章内所上传到媒体库的图片等附件不会自动删除,占用了网站空间,因此下面说明通过几行代码的简单方式实现在删除文章时自动删除缩略图以及图片附件,这样就不用手动去媒体库寻找并删除,准确而且效率高。

/* 删除文章时删除图片附件
/* ------------------------ */
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');

使用说明

将上述代码放到当前主题 functions.php 文件中即可使用,其在删除文章时先执行函数内容,删除特色图片以及图片附件,如果在使用action delete_post而不是before_delete_post将导致删除文章后因媒体附件与文章关联已取消而无法正确删除。

来源:http://boke112.com/3780.html


打印 2017-02-10 - 最近编辑于 2017-02-23 星期四

82 + 87 = ?

  1. 姜辰
    姜辰 【镇长】来自天朝的朋友 火狐浏览器 Windows 10 北京市 移动
     @reply

    – – 给力~~~~~然而我是EM。。。只能借鉴了。

    • 如风
      如风【GM】来自天朝的朋友 谷歌浏览器  SM-G9008W Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Mobile Safari/537.36 [博主]
       @reply

      @姜辰 你会写,我不会,只能照搬