Nhiều anh em sử dụng mã nguồn mở website làm bằng WordPress, sau khi cài đặt xong các bạn thường xóa trực tiếp ảnh trong thư mục nhưng trong database vẫn lưu trữ đường link ảnh dẫn đến hiện tượng trong thư viện ảnh báo lỗi ảnh làm tốc độ load khi up file rất chậm. Trong bài này mình hướng dẫn bạn cách xóa ảnh tự động không tồn tại trong WordPress.
Trước khi làm theo hướng dẫn vui lòng backup website trước khi thực hiện theo, để đề phòng rủi ro, nếu có điều kiện hãy giả lập website tại localhost để thực hiện cho an toàn nhất.
Bạn cho đoạn code này vào file functions.php
themes wordpress của bạn đang sử dụng.
function wptangtoc_delete_404_attachments(){ $url = get_home_url() . '/giatuandz.png'; $headers = @get_headers($url); $attachments = get_posts( array( 'post_type' => 'attachment', 'numberposts' => -1, 'fields' => 'ids' )); if ($attachments) { foreach ($attachments as $attachmentID){ $file_url = wp_get_attachment_url( $attachmentID); $file_headers = @get_headers($file_url); if($file_headers[0] == $headers[0]) { $deleted = wp_delete_attachment($attachmentID, true); } } } } add_action('admin_init','wptangtoc_delete_404_attachments');
Bạn cho đoạn code trên vào file functions.php themes của bạn đang sử dụng xong rồi, thì bạn f5 tải reload lại trình duyệt ngay bên trong bảng điều khiểu wordpress chính tài khoản admin rồi đợi đoạn code kia nó thực thi (Thời gian thực thi sẽ lâu nếu như số lượng ảnh của bạn nhiều, nếu số lượng ảnh của bạn rất nhiều thì hãy mở cấu hình php.ini max_execution_time cao cao một chút, nếu số lượng ảnh của bạn siêu nhiều thì hãy triển khai qua wp cli sử dụng wp eval-file) khi đã thực thi xong rồi thì bạn xóa đoạn code ở bên trên đi cho nhẹ trang quản trị viên.
Thực thi cái này cũng khá nặng tài nguyên.
Khi nào cần thì tiếp tục làm. mình nghĩ là thường làm một lần là quá đủ cho một cuộc tình 😂😂 và nếu sau này có xóa thì trừ những cái bất khả kháng thì bạn xóa ảnh thì hãy vào media wordpress mà xóa nhé hoặc nếu bạn muốn nhân bản ra nhiều website khác muốn xóa toàn bộ ảnh tự động thì có thể sử dụng wp cli.
Yêu cầu web hosting bạn phải hỗ trợ được cài đặt wp cli trước đó. bạn cd vào thư mục mã nguồn của bạn rồi sử dụng lệnh này là để nó tự động xóa tự động một cách sạch sẽ.
wp post delete $(wp post list --post_type='attachment' --format=ids --allow-root) --force --allow-root