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

如风 02-10-2017 819 ℃ ≈2分钟 评论(2)

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 星期四


67 + 70 = ?

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

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

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

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

Click
  • 解决PJAX无法加载document.write等异步加载的问题 解决PJAX无法加载document.write等异步加载的问题
  • WordPress预估阅读文章时间 WordPress预估阅读文章时间
  • 解决阿里云虚拟主机用.htaccess绑定多个域名的方法 解决阿里云虚拟主机用.htaccess绑定多个域名的方法
  • wordpress如何实现当前在线人数显示【转】 wordpress如何实现当前在线人数显示【转】
用户登录
注册