Общеизвестно, что при удалении записи 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);
Нажмите, пожалуйста, на одну из кнопок, чтобы узнать понравилась статья или нет.