- A+
所属分类:WordPress技巧
经常编辑文章的站长都知道,通过WordPress后台删除文章时,文章里用到的那些上传到媒体库的图片等附件是不会同步删除的,既占用了网站空间,又不利于内容管理,下面3z学堂就来给大家介绍如何实现。
- 代码内容如下:
/* 删除文章时同步删除图片附件
/* ------------------------ */
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将导致删除文章后因媒体附件与文章关联已取消而无法正确删除。
以上就是如何通过代码的简单方式来实现在删除文章时同步自动删除缩略图以及图片附件的方法,通过代码来实现既准确又高效,希望能帮到大家。
2018年3月12日 下午8:44 沙发
给力!这个真不错,之前自己清理每次都能清理出很多不要的图片!
2019年9月6日 下午9:45 板凳
请教一下sql语句如何删除文章内的图片呢?
2019年9月10日 上午11:54 1层
@皇家元林 sql貌似没法彻底图片哦,因为图片是文件形式存储在服务器上的,不是存在数据库里,还是用个插件好了,简单实用~
2019年9月11日 下午12:13 2层
@勇之助 不是图片 是图片插入所形成的链接