长期运营一个网站的话还是很需要关注空间的使用情况的,特别是WP系统网站,因为一些原因没有办法删除文章时自动清理附件,如果用户量大的话,会导致一些不必要的空间占用
以下为优化代码
删除文章时删除文章所引用的附件,此代码放在主题文件的functions.php里,但是最好创建一个func.php的文件,然后放在func.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');以下为删除帖子时自动删除附件的修改代码
