WordPress删除文章后自动删除文章附件图片

需求说明

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即可【推荐使用Code Snippets插件来对functions.php插入自定义代码,这样更换主题才不会失效】

代码说明

before_delete_post:在后台永久删除文章前触发:在彻底删除文章前会先执行这段函数内容来删除特色图片以及图片附件、接着才会永久删除文章;

因此如果是使用 action delete_post 而不是 before_delete_post 将导致先删除了文章后因媒体附件与文章关联已取消而无法正确删除。

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

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注

Commonly asked questions and answers

Phone:
+1 (555) 000-0000
Email:
info@mysite.com
What does your web design and development process include?
Egestas nullam vehicula, at litora pharetra lacinia. Integer suspendisse condimentum, urna etiam, risus sollicitudin primis varius erat. Donec senectus massa, hendrerit vulputate convallis felis.

Aenean fames risus sodales, viverra accumsan suspendisse, eleifend nunc pharetra hendrerit hac class. Viverra sit vitae dictumst, massa consequat hac, nullam tristique vehicula metus eleifend curabitur. Tellus nostra commodo, et inceptos facilisis neque.

Augue vestibulum netus, neque ante a turpis molestie. Phasellus maecenas, hendrerit varius tristique non. Egestas rutrum ornare augue, suspendisse vehicula pellentesque, dictum ad cubilia nisi lectus duis sodales at. Pretium arcu dictumst, inceptos hendrerit, ad sociosqu pellentesque sollicitudin curabitur curae.

Newsletter subscribe!

Enter your email to unlock an exclusive 10% discount on professional website development tailored to your business needs.

Have more questions?

Let’s schedule a short call to discuss how we can work together and contribute to the success of your project or idea.