Иногда возникает необходимость полностью очистить базу данных WordPress от всех записей — например, при разработке тестового сайта или подготовке к новому контенту. В этом случае можно обойтись без установки дополнительных плагинов, используя лишь SQL-запросы или PHP-скрипты. В статье подробно разберём, как безопасно и быстро удалить все записи из базы WordPress, сохранив при этом нужные данные, и приведём примеры кода.
Почему иногда нужно удалить все записи из WordPress
Удаление всех записей — не самая частая задача, но для разработчиков и администраторов сайтов она нередко встречается. Вот основные причины:
- Разработка и тестирование: при создании шаблонов или плагинов нужно очистить тестовый контент.
- Миграция: при переносе сайта с сохранением структуры, но без старого контента.
- Перезапуск проекта: когда нужно начать с чистого листа, не трогая настройки и пользователей.
Важно понимать, что удаление записей — необратимый процесс, поэтому рекомендуется делать резервные копии базы перед выполнением любых операций.
Удаление всех записей через phpMyAdmin с помощью SQL-запросов
Самый быстрый способ — выполнить SQL-запросы напрямую в базе данных через phpMyAdmin или любой другой инструмент работы с MySQL. В WordPress записи хранятся в таблице wp_posts, а мета-информация — в таблице wp_postmeta.
Чтобы удалить все записи, выполните следующие запросы:
DELETE FROM wp_postmeta WHERE post_id IN (SELECT ID FROM wp_posts WHERE post_type = 'post');
DELETE FROM wp_posts WHERE post_type = 'post';Этот код удалит только записи с типом post (обычные записи блога). Если нужно удалить все типы, включая страницы и пользовательские типы, замените условие post_type = 'post' на 1=1 или удалите условие вовсе.
Важно: таблицы могут иметь другой префикс вместо wp_. Проверьте его в файле wp-config.php.
Удаление всех пользовательских типов записей
Если на сайте используются кастомные типы записей, их тоже можно удалить через SQL:
DELETE FROM wp_postmeta WHERE post_id IN (SELECT ID FROM wp_posts WHERE post_type = 'custom_type');
DELETE FROM wp_posts WHERE post_type = 'custom_type';Где custom_type — название вашего типа записи.
Удаление записей через кастомный PHP-скрипт
Если у вас нет доступа к базе напрямую или вы хотите сделать очистку из административной панели, можно написать небольшой PHP-скрипт. Его удобно запускать через отдельный файл в корне сайта или как часть темы/плагина.
Пример кода для удаления всех записей типа post:
<?php
// Подключаем WordPress
require_once('wp-load.php');
function wpteam_delete_all_posts() {
$args = [
'post_type' => 'post',
'posts_per_page' => -1,
'post_status' => 'any',
'fields' => 'ids',
];
$all_posts = get_posts($args);
foreach ($all_posts as $post_id) {
wp_delete_post($post_id, true); // true — удаляет без перемещения в корзину
echo "Удалена запись с ID: $post_id
";
}
echo 'Все записи удалены.';
}
wpteam_delete_all_posts();
?>Этот скрипт удалит все записи типа post и выведет ID удалённых записей. Если нужно очистить страницы, замените 'post' на 'page' или другой тип.
Преимущества метода через PHP
- Безопаснее, так как вызывает встроенную функцию
wp_delete_post(), которая удаляет связанные данные. - Можно интегрировать в админку или расширять под нужды.
- Не требуется прямой доступ к базе.
Удаление записей с помощью WP-CLI
Если у вас есть доступ к командной строке сервера и установлен WP-CLI, очистить записи можно очень быстро:
wp post delete $(wp post list --post_type='post' --format=ids) --forceЭта команда удалит все записи типа post принудительно, без перемещения в корзину.
WP-CLI — мощный инструмент, который стоит освоить для эффективного управления WordPress.
Советы по безопасности и резервному копированию
Перед удалением всех записей обязательно сделайте резервную копию базы данных. Используйте плагины, например, UpdraftPlus или BackWPup, либо экспортируйте базу через phpMyAdmin.
После удаления проверьте, что на сайте нет ошибок и данные, которые не должны были удаляться (страницы, настройки), на месте.
Если вы работаете на живом сайте, лучше всего сначала протестировать на локальной копии.
Итог
Удаление всех записей из базы WordPress без плагинов возможно несколькими способами: через SQL-запросы, PHP-скрипты или WP-CLI. Каждый метод имеет свои преимущества и подходит для разных ситуаций. Используйте подходящий именно вам, не забывая про безопасность и резервные копии.