Как удалить все записи (посты) из WordPress через код — практическое решение

Иногда возникает задача массово очистить сайт WordPress от всех записей (постов) — например, при переносе контента, подготовке тестового сайта или полном обновлении. В стандартной админке WordPress массовое удаление постов через интерфейс ограничено по количеству и требует много времени. В таких случаях оптимальным решением будет удаление всех постов через код.

Почему стоит использовать код для удаления всех записей

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

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

Удаление всех записей WordPress через функцию на PHP

Приведём пример функции wpeasy_delete_all_posts(), которая удаляет все посты стандартного типа post. Чтобы избежать случайного удаления, функцию стоит запускать однократно, а после выполнения — закомментировать или удалить.

function wpeasy_delete_all_posts() {
    // Получаем все ID постов типа 'post'
    $posts = get_posts(array(
        'post_type'      => 'post',
        'posts_per_page' => -1,
        'fields'         => 'ids',
        'post_status'    => 'any'
    ));

    if (empty($posts)) {
        echo 'Посты не найдены.';
        return;
    }

    foreach ($posts as $post_id) {
        wp_delete_post($post_id, true); // true — удаление без перемещения в корзину
    }
    echo 'Удаление всех постов завершено.';
}

Эту функцию можно добавить в файл functions.php вашей темы или в отдельный плагин. Затем вызовите wpeasy_delete_all_posts(); однократно, например, через админку или с помощью выполнения в консоли WP-CLI.

Удаление с помощью WP-CLI

WP-CLI — мощный инструмент для управления WordPress из командной строки. Для удаления всех постов можно использовать команду:

wp post delete $(wp post list --post_type=post --format=ids) --force

Эта команда удалит все посты без перемещения в корзину.

Как удалить записи кастомных типов постов

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

function wpeasy_delete_all_products() {
    $products = get_posts(array(
        'post_type'      => 'product',
        'posts_per_page' => -1,
        'fields'         => 'ids',
        'post_status'    => 'any'
    ));

    if (empty($products)) {
        echo 'Продукты не найдены.';
        return;
    }

    foreach ($products as $product_id) {
        wp_delete_post($product_id, true);
    }
    echo 'Удаление всех продуктов завершено.';
}

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

Особенности и рекомендации при массовом удалении постов

Резервное копирование

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

Удаление связанных данных

Функция wp_delete_post() удаляет все связанные метаданные и таксономии, но если на сайте есть сторонние таблицы или плагины, сохраняющие данные отдельно, их нужно очищать дополнительно.

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

После массового удаления рекомендуется оптимизировать базу данных. Для этого подойдет, например, плагин Clearfy Pro — он позволяет быстро очистить и оптимизировать базу, удаляя остаточные данные.

Подробнее о Clearfy Pro на wpshop.ru.

Пример интеграции удаления в админ-меню

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

add_action('admin_menu', function() {
    add_management_page('Удалить все посты', 'Удалить все посты', 'manage_options', 'wpeasy-delete-posts', 'wpeasy_delete_posts_page');
});

function wpeasy_delete_posts_page() {
    if (!current_user_can('manage_options')) {
        wp_die('Доступ запрещён');
    }

    if (isset($_POST['wpeasy_delete_posts'])) {
        wpeasy_delete_all_posts();
        echo '<div class="updated notice">Все посты удалены.</div>';
    }
    ?>
    <div class="wrap">
        <h1>Удалить все посты</h1>
        <form method="post">
            <p><strong>Внимание!</strong> Это действие необратимо.</p>
            <input type="submit" name="wpeasy_delete_posts" class="button button-primary" value="Удалить все посты" />
        </form>
    </div>
    <?php
}

Так вы сможете запускать удаление из админки, не заходя в файлы.

Заключение

Удаление всех постов через код — мощный инструмент для разработчиков и администраторов WordPress. Он экономит время и позволяет гибко управлять контентом. Главное — соблюдать осторожность, делать резервные копии и тестировать код на тестовых сайтах. Для оптимизации после удаления используйте инструменты вроде Clearfy Pro.

Если хотите узнать больше полезных решений для WordPress и плагинов, посетите wpshop.ru.

Оптимизация базы данных WordPress для повышения скорости сайта
17.11.2025
Как создать свой шорткод с параметрами в WordPress
30.11.2025
Как избежать проблем с пользовательскими ролями в WordPress
21.03.2026
Как сделать многоуровневый фильтр в WordPress на примере товаров
04.04.2026
Как использовать WPCommunity для создания приватного клуба на WordPress
14.04.2026