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