WordPress刪除文章時自動刪除圖片附件和刪除媒體庫內所有文件的方法

把數據庫的很多資料全部刪除,但發現媒體庫中的文件還存在,網上找教程,發現可以這樣解決,因為wordpress的圖片以及文章數據都是儲存在wp-posts這一個數據表裡面的,刪除wp-posts表裡面的所有媒體文件記錄就可以解決了。

DELETE FROM wp_posts WHERE NOT(post_status = ‘publish’ AND post_type IN(‘post’,’nav_menu_item’,’page’));

這句的意思是在wp_posts表中刪除文章狀態(post_status)不是發佈(publish)狀態,並且文章類型(post_type)不是文章(post)、導航菜單(nav_menu_item)或者頁面(page)的所有文章。
小熊網上找的,實測可以正常刪除,希望幫助用到的人,但一定慎用,這樣會刪除所有沒有添加在文章裡的圖片,有可能誤刪除你上傳在媒體庫的小圖標等等,一定提前做好備份。

WordPress刪除文章時,文章內所上傳到媒體庫的圖片等附件不會自動刪除,佔用了網站空間,因此下面說明通過幾行代碼的簡單方式實現在刪除文章時自動刪除縮略圖以及圖片附件,這樣就不用手動去媒體庫尋找並刪除,準確而且效率高。將下面代碼放到主題functions.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’);

本備份網所有內容均來自網上這處轉載請勿註明轉自:https://ylmen.hk/41567

Author: ylmen