Как удалить неиспользуемые посты и медиа в WordPress: практические советы и примеры кода

Почему важно удалять неиспользуемые посты и медиафайлы

Со временем в базе данных WordPress накапливаются записи и медиафайлы, которые уже не используются на сайте. Это может быть результатом экспериментов с контентом, временных публикаций, тестовых загрузок изображений и прочего. Наличие таких данных негативно влияет на производительность сайта, увеличивает размер резервных копий и усложняет управление ресурсами. Кроме того, неиспользуемые медиафайлы занимают место на сервере, что особенно критично при ограниченном хостинге.

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

В этой статье мы рассмотрим, как можно найти и безопасно удалить такие записи и файлы с помощью плагинов и кастомных функций.

Как найти неиспользуемые медиафайлы в WordPress

Поиск медиафайлов, которые не вставлены в записи или страницы, требует анализа базы данных и файловой системы. Существует несколько способов это сделать.

Использование плагинов

Самый простой способ — воспользоваться специализированными плагинами. Например:

  • Media Cleaner — анализирует библиотеку медиа и находит файлы, не привязанные к записям или страницам.
  • DNUI (Delete Not Used Image) — ищет неиспользуемые изображения и позволяет их удалить.

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

Самостоятельный поиск с помощью SQL-запросов

Если вы хотите более глубокий анализ, можно использовать SQL-запросы к базе данных. К примеру, чтобы найти медиафайлы, которые не используются в контенте:

SELECT ID, post_title, guid FROM wp_posts WHERE post_type = 'attachment' AND ID NOT IN (SELECT meta_value FROM wp_postmeta WHERE meta_key = '_wp_attachment_metadata');

Однако такой запрос не гарантирует 100% точность, так как некоторые файлы могут использоваться динамически или через нестандартные методы.

Удаление неиспользуемых медиафайлов с помощью кода

Для автоматизации процесса удаления можно написать функцию, которая будет удалять медиафайлы, не связанные с записями.

Ниже пример функции, которая проверяет наличие медиафайла в записях и удаляет его, если он не используется:

function wpstuff_delete_unused_attachments() {
    $args = [
        'post_type'      => 'attachment',
        'posts_per_page' => -1,
        'post_status'    => 'inherit',
    ];
    $attachments = get_posts($args);
    foreach ($attachments as $attachment) {
        $id = $attachment->ID;
        // Проверяем использование в постах
        $used = false;
        $posts = get_posts(['s' => $attachment->guid, 'post_type' => 'any']);
        if (count($posts) > 0) {
            $used = true;
        }
        if (!$used) {
            wp_delete_attachment($id, true);
        }
    }
}

Эту функцию можно запускать вручную или через планировщик WP-Cron для периодической очистки.

Как найти и удалить неиспользуемые посты и черновики

Кроме медиафайлов, в WordPress часто скапливаются черновики, автосохранения и устаревшие посты, которые не нужны на сайте.

Поиск старых черновиков и автосохранений

Чтобы найти все черновики, используйте следующий запрос в админке:

WP Admin > Записи > Все записи > Статус: Черновики

Там можно массово удалить ненужные.

Для удаления автосохранений и ревизий можно использовать плагин WP-Sweep, который оптимизирует базу, удаляя мусор.

Удаление черновиков через код

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

function wpstuff_delete_old_drafts() {
    $drafts = get_posts([
        'post_status' => 'draft',
        'post_type' => 'post',
        'date_query' => [
            [
                'before' => '30 days ago',
            ],
        ],
        'posts_per_page' => -1,
    ]);
    foreach ($drafts as $draft) {
        wp_delete_post($draft->ID, true);
    }
}
<

Эта функция удалит все черновики старше 30 дней. Можно запускать её вручную или по расписанию.

Оптимизация базы данных после удаления

Удаление записей и медиафайлов освобождает место, но в базе данных остаются «дыры» и неиспользуемые индексы. Чтобы полностью оптимизировать базу, рекомендуется выполнить следующие действия:

  • Использовать плагин WP-Optimize для очистки и оптимизации таблиц.
  • Выполнить SQL-команду OPTIMIZE TABLE wp_posts; и другие таблицы через phpMyAdmin.
  • Удалить старые транзиенты и временные опции.

Регулярная оптимизация позволяет улучшить скорость запросов и общую производительность сайта.

Заключение: лучшие практики для wpstuff.ru

Поддержание чистоты WordPress — важная задача для любого сайта. Для wpstuff.ru, где публикуется технический контент, особенно важно иметь упорядоченную базу данных и минимальное количество мусора.

Рекомендуется:

  • Регулярно проверять и удалять неиспользуемые медиафайлы с помощью плагинов и кастомных функций.
  • Чистить старые черновики и ревизии, чтобы не перегружать базу.
  • Проводить оптимизацию базы данных минимум раз в месяц.
  • Внедрить автоматические задачи для поддержания порядка (через WP-Cron).

Такой подход обеспечит стабильную работу сайта и улучшит опыт пользователей.

Как удалить кэш плагинов в WordPress при проблемном очищении
17.12.2025
Как создать автоматический мультиязычный сайт на WordPress без использования полиглотов
24.01.2026
Как автоматически удалять похожие посты в WordPress
10.12.2025
Как добавить автоматическое удаление старых записей в WordPress по дате
01.03.2026
Как создать автоматический импорт контента из внешних источников в WordPress
13.01.2026