Коли ви керуєте сайтом на WordPress, ви можете зіткнутися з ситуаціями, коли потрібно видалити кілька записів одночасно. Однак WordPress не видаляє автоматично вкладення або зображення запису, пов’язані з цими записами. Це може призвести до зайвого безладу у вашій медіатеці та використанні сховища.
У цій статті ми покажемо вам, як автоматично видаляти вкладення та зображення запису при видаленні записів у WordPress за допомогою простого фрагмента коду.
Розуміння проблеми
За замовчуванням, коли ви видаляєте запис у WordPress, його вкладення (такі як зображення, PDF або інші медіа) та зображення запису залишаються в медіатеці. Це може бути проблематично для масштабних очищень або коли ви хочете переконатися, що всі пов’язані дані видалені разом із записом.
Рішення
Щоб вирішити цю проблему, ви можете додати користувацьку функцію на свій сайт WordPress, яка автоматично видаляє всі вкладення та зображення запису щоразу, коли запис видаляється.
Покрокова інструкція
- Відкрийте каталог вашої теми WordPress і знайдіть файл
functions.php. Альтернативно, ви можете створити користувацький плагін для цього коду. - Додайте наступний фрагмент коду до файлу:
function delete_post_attachments($post_id) {
// Перевірте, чи видалений елемент є записом
if (get_post_type($post_id) !== 'post') {
return;
}
// Отримайте всі вкладення, пов'язані з записом
$attachments = get_attached_media('', $post_id);
foreach ($attachments as $attachment) {
wp_delete_attachment($attachment->ID, true);
}
// Отримайте та видаліть зображення запису
$featured_image_id = get_post_thumbnail_id($post_id);
if ($featured_image_id) {
wp_delete_attachment($featured_image_id, true);
}
}
add_action('before_delete_post', 'delete_post_attachments');
Ця функція використовує хук before_delete_post, щоб виконуватися щоразу, коли запис видаляється. Вона видаляє:
- Усі медіа-вкладення, пов’язані з записом.
- Зображення запису (якщо встановлено).
Як це працює
Функція перевіряє, чи видалений елемент є записом. Якщо так, вона отримує всі вкладення, пов’язані з записом, за допомогою get_attached_media() і видаляє їх за допомогою wp_delete_attachment(). Додатково, вона видаляє зображення запису за допомогою get_post_thumbnail_id().
Речі, які слід врахувати
- Це рішення працює спеціально для записів. Якщо ви хочете включити інші типи записів, ви можете змінити умову у функції.
- Переконайтеся, що протестували цю функціональність у тестовому середовищі перед застосуванням на живому сайті.
- Зробіть резервну копію вашої бази даних і файлів, щоб запобігти випадковій втраті даних.
Висновок
З цим простим фрагментом коду ви можете спростити процес управління записами та переконатися, що жодні зайві вкладення або зображення запису не залишаються після видалення записів. Це особливо корисно для масових видалень або масштабних очищень сайту.
Ми сподіваємося, що цей посібник допоможе вам підтримувати ваш сайт WordPress організованим та ефективним. Якщо у вас є питання або потрібна додаткова допомога, не соромтеся звертатися!