Массовое удаление миниатюр у записей в WordPress

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

Проблема массового удаления миниатюр

К сожалению, по умолчанию вы можете удалять миниатюры только при ручном редактировании записей. Если вы имеете сотни записей с миниатюрами, то удалять их вручную будет слишком долго. Вместо этого мы будем использовать иной подход. Мы сделаем запрос к базе данных и отключим миниатюры у всех записей.

Перед тем, как приступать к реализации данного метода, отметьте для себя, что код, приведенный ниже, удалит миниатюры у всех записей на вашем сайте. Также учтите, что данный код не будет удалять какие-либо загруженные вами изображения, они по-прежнему будут доступны в медиа-библиотеке, и вы можете использовать их в любое время.

Все, что вам понадобится – это скопировать и вставить код в файл functions.php вашей темы.

global $wpdb;
$wpdb->query( "
    DELETE FROM $wpdb->postmeta 
    WHERE meta_key = '_thumbnail_id'
" );

Готово. Как только вы сохраните файл functions.php, скрипт запустит запрос к базе данных и удалит миниатюры у всех записей.
Примечание: Удалите код сразу же после сохранения файла functions.php. Вы не сможете установить миниатюры в WordPress, пока у вас будет добавлен данный код.

Источник: wpbeginner.com

Блог про WordPress
Комментарии: 38
  1. Вадим

    Спасибо за статью!
    Неподскажете можно ли удалить все изображения одного размера, если размер был задан в function.php так:
    add_image_size( ‘featured-post-image’, 80, 80, true );

    1. Дмитрий (автор)

      Попробуйте вот этот плагин: https://wordpress.org/plugins/image-cleanup/

      1. Сергей

        Спасибо. Пригодилось.

  2. Петр

    Ваш код удалил вообще все изображения! Вместо сайта теперь грузится пустое белое окно и вместо админки почему-то тоже пустота. Как исправить?

    1. Дмитрий (автор)

      Попробуйте откат сделать. Вы неправильно вставили код в functions. Вставлять надо в конец файла и обязательно перед

      ?>
  3. Петр

    Я так и вставил. В конец и перед ?>
    Такое чувство, будто вообще все файлы удалились. В исходном коде страницы пусто. И судя по поиску в яндексе, я уже не первый у кого это случилось.

    К сожалению по моему тарифу нет доступа к FTP. Обратился в службу поддержки хостинга, надеюсь, у них есть свежий бекап…

    1. Дмитрий (автор)

      Странно тогда. Не слышал о таком. Посмотрю, в чем может быть проблема.

  4. Тимур

    Привет Дмитрий!
    Ситуация такая: стоял в админке разменр на миниатюры 150x150px, а сами миниатюры на сайте в сайдбаре размером 65x65px, но при этом если её из сайдбара картинка в 65px сохранить на рабочий стол компьютера, то она размерами 150x150px.
    В настройках Я изменил и поставил вместо 150 на 65x65px. Все миниатюры сейчас стоят с размером 150x150px и показываются в окошке 65x65px.

    Вопрос следующий: «Как мне массово изменить размеры старых миниатюр со 150px на 65px?»

    1. Тимур

      После изменения, новые миниатюры режутся на 65x65px, а вот старые все остались с размерами 150x150px

      1. Дмитрий (автор)

        Для старых миниатюр воспользуйтесь вот этим плагином:

        https://wordpress.org/plugins/ajax-thumbnail-rebuild/

  5. Тимур

    О, всё, нашёл! Вот плагин для перегенерация всех картинок после изменения размеров в админке…
    https://wordpress.org/plugins/regenerate-thumbnails/

    1. Дмитрий (автор)

      Или этим, да. Один из самых популярных, но есть минус — ест много ресурсов сервера, если изображений очень много. Потому советую первый вариант выше.

  6. Тимур

    Он аналогичен тому что Я скинул? Перегенирирует миниатюры в случае изменений их размеров в настройках WP ?

  7. Тимур

    Ест много ресурсов вообще или когда перегенерирует картинки?

    1. Дмитрий (автор)

      https://wordpress.org/plugins/ajax-thumbnail-rebuild/ делает перегенерацию постепенно, одно изображение за другим, а https://wordpress.org/plugins/regenerate-thumbnails/ делает все разом, что может в итоге просто выйти за пределы доступных ресурсов со стороны хостинга.

  8. Тимур

    Ясно, но Я уже всё сделал без глюков…

    1. Дмитрий (автор)

      Ну в таком случае отлично. Просто на заметку :)

  9. Тимур

    https://wordpress.org/plugins/regenerate-thumbnails/ ещё и обрабатывает кажое изображение при загрузке, https://wordpress.org/plugins/ajax-thumbnail-rebuild/ тоже так делает?

    1. Дмитрий (автор)

      Да, это тоже происходит. Другой плюс плагина: если произойдет какой-либо обрыв во время регенерации миниатюр, придется все начинать сначала. В AJAX такого нет, они все обрабатываются постепенно, а не разом.

  10. Тимур

    Уговорил, поставил…

  11. Тимур

    Слушай, а что значит там пункт: «Только восстановление Новейшие фотографии» ?

    1. Дмитрий (автор)

      Только для последних добавляемых фото.

  12. Алексей

    Он не только миниатюры, он и картинки удалил к постам… Мда… Вы бы проверяли сначала код.

    1. Дмитрий (автор)

      Все возможно. «Мопед не мой», как говорится. Проверяйте на свой страх и риск.

  13. Андрей

    Удалилось все, миниатюры, картинки, огромное вам спасибо!

    1. Дмитрий (автор)

      Код был поправлен.

  14. Анатолий

    Дмитрий, здравствуйте! А что, если сделать подобный запрос SQL типа DELETE FROM $wpdb->postmeta WHERE meta_key = ‘_thumbnail_id’ непосредственно в записях таблиц базы данных на хостинге, как это делается, например, для пакетного удаления ревизий постов: DELETE FROM wp_posts WHERE post_type = «revision»;? Только вместо WP подставляем свое значение, если это необходимо. Спасибо, Анатолий.

  15. Дмитрий (автор)

    Можно, но для начала лучше сделать бэкап, чтобы ничего не потерять вследствие случайных ошибок/описок.

  16. Елена Шикова

    Добрый день! Вы сносите только записи из базы данных, смыла я в этом много не вижу. обычно люди хотят таким методом расчистить место на сервере, а для этого нужно сносить файлы с сервера. Надеюсь ответ приходит на e-mail?

    1. Дмитрий (автор)

      В данной статье речь идет про снос миниатюр у записей, а не про снос самих записей.

  17. Андрей

    А если у меня на сайте используются миниатюры в архиве новостей, рубрик… Вместо них после добавлении функции оригинал подгрузится или ничего?

    1. Дмитрий (автор)

      Миниатюры у всех записей удалятся. В том числе и у архивных записей.

  18. Андрей

    Тогда, наверно мне это не подойдёт. Такой вопрос: я сменил тему сайта и полностью отключил генерацию дополнительных размеров изображений, то есть у меня сейчас при загрузке картинки в папке на сервере есть только один файл (оригинал) и никаких миниатюр, но от прошлой темы эти миниатюры остались и они кое-где на сайте с новой темой всплывают (вот пример https://1drv.ms/u/s!AudL6PLK7wBYicsO2jdSH-hZg-dOZQ). Есть ли какая-либо возможность «перезадать» использование изображений на сайте (и в статьях и в архивах и так далее…)? То есть мне надо что бы там где сейчас показываются миниатюры, показывались бы оригиналы загруженных изображений

    1. Дмитрий (автор)

      Если правильно понял суть задачи: https://wordpress.org/plugins/regenerate-thumbnails/

  19. Дмитрий (автор)

    Хотя, наверно, это не совсем тот плагин. Именно такого, как вам требуется, не встречал.

    1. Андрей

      Это именно то что мне надо было. Теперь в архивах все превьюшки одного размера и нет лишних изображений (причем физически тоже удалились). Спасибо

      1. Дмитрий (автор)

        Тогда ок) Я думал, что нужно решение, которое бы подцепляло исходную картинку вместо миниатюры.

        Но раз помогло, то ок.

        1. Андрей

          Так в том то и дело что теперь там где раньше использовались миниатюры (например, в новостной ленте до смены темы были 320-150px) сейчас используются оригиналы (1280-720px) + миниатюры можно будет создать, если когда-нибудь они понадобятся)

Добавить комментарий для Дмитрий Отменить ответ

Получать новые комментарии по электронной почте.