WordPress 刪除文章時,文章內所上傳到媒體庫的圖片等附件不會自動刪除,佔用了網站空間,因此下面説明通過幾行代碼的簡單方式實現在刪除文章時自動刪除縮略圖以及圖片附件,這樣就不用手動去媒體庫尋找並刪除,準確而且效率高。
代碼
- /* 刪除文章時刪除圖片附件
- /* ------------------------ */
- function delete_post_and_attachments($post_ID) {
- //刪除特色圖片
- "SELECT * FROM $wpdb->postmeta WHERE meta_key = '_thumbnail_id' AND post_id = $post_ID" );
- foreach ( $thumbnails as $thumbnail ) {
- true );
- }
- //刪除圖片附件
- $attachments = $wpdb->get_results( "SELECT * FROM $wpdb->posts WHERE post_parent = $post_ID AND post_type = '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 將導致刪除文章後因媒體附件與文章關聯已取消而無法正確刪除。