Почему важно удалять неиспользуемые посты и медиафайлы
Со временем в базе данных 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).
Такой подход обеспечит стабильную работу сайта и улучшит опыт пользователей.