Обычно в медиабиблиотеке такие файлы показаны в виде серых, безликих квадратиков, их и надо удалять. Есть плагины для массового удаления медиафайлов. Конечно лучше было бы найти реальные файлы и закачать их в Upload.
@alexander70 я бы так и сделал если бы у меня не было 65 страничек по 1000 картинок при том что битые рандомно разбросаны по галерее. Было бы хорошо если к таким картинкам приписывался класс от lazy-load — «error» как в каталоге товаров(там где не выходит загрузить дописывается класс). Тогда можно было бы хотя бы через консоль или поиск в просмотре кода обнаружить их чтобы каждую страницу не перелистывать. А так нужно комплексное решение. Я полагаю что можно сделать скрипт получающий с базы данных список медиафайлов после чего сопоставляет ссылки с тем существует ли файл а после в случае надобности проводил удаление но моих навыков тут не хватит
Модератор
Yui
(@fierevere)
永子
https://wordpress.org/plugins/media-cleaner/
можете попробовать это, хотя скорее всего потребуется его pro версия, попробуйте поинтересоваться у автора плагина
(@fierevere),(@alexander70) Спасибо господа)
Всё же я недооценил себя)
Вот скрипт решения проблемы. Впихнул на исполнение после тестов прямо в page.php
Сначала получаем все медиа. После сверяем на наличие в директоии uploads, чего нету изничтожаем то атомов, эврика!)
$args = array(
'post_type' => 'attachment',
'numberposts' => -1,
'post_status' => null,
'post_parent' => null, // any parent
);
$attachments = get_posts($args);
if ($attachments) {
$problems = array();
foreach($attachments as $attachment):
// Путь к картинке
$file = "wp-content/uploads/".get_post_meta( $attachment->ID, '_wp_attached_file', true );
// Проверяем наличие в файлах (Если нет, удаляем медиа)
if(!file_exists(''.$file.'') && $attachment->ID != 5){
wp_delete_attachment( $attachment->ID );
echo "Deleted";
$problems[] =
[
'id' => $attachment->ID,
'name' => $attachment->post_title,
];
}
endforeach;
//(var_dump) Проводим отладку, инспектируем удалённые записи
get_vd($problems);
}