Зачем нужно удалять старые записи в WordPress
Со временем на сайте накапливается большое количество устаревших или неактуальных записей, которые занимают место в базе данных и могут замедлять работу сайта. Особенно это актуально для образовательных сайтов с большим количеством курсов и материалов, как на wpfreecourses.ru. Регулярное удаление устаревших записей помогает поддерживать базу данных в оптимальном состоянии, снижать нагрузку на сервер и улучшать производительность.
Удалять записи вручную неудобно и долго, особенно если их тысячи. Для таких задач отлично подходит WP-CLI — инструмент командной строки для управления WordPress. С его помощью можно автоматизировать удаление и выполнять операции быстро и без ошибок.
Что такое WP-CLI и как его установить
WP-CLI — это консольный инструмент, который позволяет управлять WordPress через терминал. С его помощью можно обновлять плагины, создавать записи, управлять пользователями и выполнять многие другие задачи, в том числе удалять записи.
Чтобы установить WP-CLI, нужно выполнить несколько простых шагов (пример для Linux-сервера):
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
php wp-cli.phar --info
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wpПосле этого в терминале доступна команда wp. Проверьте, что WP-CLI работает, вызвав wp --info.
Как удалить старые записи по дате с помощью WP-CLI
Для удаления записей в WP-CLI используется команда wp post delete. Чтобы выбрать только старые записи, можно использовать параметры фильтрации, например, по дате публикации.
Пример: удалить все записи, опубликованные более двух лет назад:
wp post delete $(wp post list --post_type=post --date_query_column=post_date --before='2 years ago' --format=ids) --force<Здесь происходит следующее:
wp post listвозвращает список ID постов типаpost, опубликованных раньше чем два года назад;--format=idsвыводит только ID через пробел;- Полученные ID передаются в команду
wp post delete, которая удаляет записи с опцией--force(без отправки в корзину).
Если у вас на сайте есть собственные типы записей, например, course для курсов, их тоже можно удалять:
wp post delete $(wp post list --post_type=course --date_query_column=post_date --before='3 years ago' --format=ids) --forceАвтоматизация удаления с помощью cron
Чтобы не запускать команды вручную, можно настроить регулярное удаление через cron — планировщик задач в Linux. Создайте bash-скрипт delete-old-posts.sh с командой удаления:
#!/bin/bash
cd /path/to/wordpress
wp post delete $(wp post list --post_type=post --date_query_column=post_date --before='2 years ago' --format=ids) --forceДайте права на выполнение:
chmod +x delete-old-posts.shДобавьте в cron задание, например, для ежемесячного запуска:
0 3 1 * * /path/to/delete-old-posts.shЭто будет запускать скрипт в 3 часа ночи первого числа каждого месяца.
Примеры фильтров и расширения функционала удаления
Удаление по категории или таксономии
WP-CLI позволяет фильтровать записи по таксономиям, например, удалить старые записи из категории «Новости»:
wp post delete $(wp post list --post_type=post --category_name=news --date_query_column=post_date --before='1 year ago' --format=ids) --forceЭто полезно, если вы хотите чистить контент только из определённых разделов.
Удаление записей с учетом пользовательских полей
Если записи имеют метаданные, например, статус курса, можно использовать WP-CLI с помощью дополнительных скриптов на PHP:
wp eval '
$args = array(
"post_type" => "course",
"meta_query" => array(
array(
"key" => "course_status",
"value" => "archived",
),
),
"fields" => "ids",
"date_query" => array(
array(
"before" => "2 years ago",
),
),
);
$posts = get_posts($args);
if (!empty($posts)) {
foreach ($posts as $post_id) {
wp_delete_post($post_id, true);
}
}'Этот код удалит архивные курсы старше двух лет.
Практические советы и рекомендации
- Перед удалением всегда делайте резервную копию базы данных.
- Тестируйте команды на тестовом сайте, чтобы избежать потери нужного контента.
- Используйте опцию
--dry-run(при наличии в плагинах или скриптах) для проверки, какие записи будут удалены. - Для сайтов с большим количеством записей сначала удаляйте частями, чтобы избежать таймаутов.
Альтернативные плагины для очистки базы данных
Если вы предпочитаете графические интерфейсы, можно использовать плагины, которые помогут очистить базу от старого контента:
- Clearfy Pro — оптимизирует сайт и дает инструменты для удаления мусора.
- WPRemark — помогает с модерацией и очисткой комментариев, что тоже важно для базы.
Однако для массового удаления записей по дате и кастомным критериям WP-CLI остается самым быстрым и гибким инструментом.