Как в Вордпресс вместе с записью удалить все её изображения

12 февраля 2018 2

Удаляя записи в Вордпресс, нужно помнить, что загруженные для них изображения остаются, и их нужно удалять вручную. Показываю, как с помощью функции wp_delete_attachment() можно заставить Вордпресс удалять прикрепленные к записи изображения.

Продающие лендинги

Чтобы удалить только основное изображение записи, можно воспользоваться таким сниппетом.

add_action( 'before_delete_post', 'wps_remove_attachment_with_post', 10 );
function wps_remove_attachment_with_post($post_id) {
 if(has_post_thumbnail( $post_id ))
 {
 $attachment_id = get_post_thumbnail_id( $post_id );
 wp_delete_attachment($attachment_id, true);
 }
}

Чтобы автоматически удалялись все прикрепленные изображения, модернизируем немного код, добавив в него цикл.

add_action( 'before_delete_post', function( $id ) {
 $attachments = get_attached_media( '', $id );
 foreach ($attachments as $attachment) {
 wp_delete_attachment( $attachment->ID, 'true' );
 }
});

Код вставляем в файл functions.php активной темы.

Обратите внимание, изображения удаляются не после удаления записи, а после удаления записи из корзины. 

Если нужно, чтобы удалялось все сразу, можно отключить корзину Вордпресс. Для этого нужно добавить в wp-config.php такую строчку:

define('EMPTY_TRASH_DAYS', 0);

Теперь изображения записи будут удаляться сразу после удаления самой записи, минуя корзину. Напомню, по умолчанию в Вордпресс записи в корзине хранятся 30 дней.

Подпишитесь на мой телеграм и первыми получайте новые материалы, в том числе которых нет на сайте.

Подпишитесь на рассылку
Один раз в месяц все новые материалы в одном письме

Лучшее за неделю
Иван Данилин

Практикующий веб-разработчик, специализируюсь на платформе Вордпресс.

Комментарии
  1. >>>>>Код вставляем в файл functions.php активной темы<<<<<
    А в какое место? Или без разницы?
Добавить комментарий

Услуги фрилансеров по фиксированной цене — 500 р.
Подробнее