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

Общеизвестно, что при удалении записи WordPress, добавленные к ней изображения, остаются. Их приходится удалять вручную, используя Медиабиблиотеку (раздел в админ-панели Медиафайлы -> Библиотека). Но если одновременно будут удалены несколько постов, то картинки, относящиеся к ним, будет довольно тяжело найти.

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

Для решения задачи будем использовать специальный PHP-код, который необходимо будет добавить в файл functions.php Вашей активной WordPress-темы.

Если Вы не знаете, как редактировать functions.php, то в этом случае Вам поможет плагин ProFunctions.

Итак, в указанный файл нужно добавить следующие строки на языке PHP. Так, чтобы автоматически удалять только основное изображение записи, следует использовать следующий код:

function wpschool_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', 'wpschool_remove_attachment_with_post', 10 );

Для удаления всех изображений поста служат следующие сроки:

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

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

// Отключение корзины
define('EMPTY_TRASH_DAYS', 0);
Курс WordPress-разработчик
Если Вам понравилась статья — поделитесь с друзьями
Михаил Петров