Как удалить удалённые публикации в WordPress через REST API с примерами кода

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

Что такое удалённые публикации (Trash) в WordPress и зачем их удалять

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

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

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

Использование REST API WordPress для удаления записей из корзины

WordPress REST API позволяет работать с контентом сайта программно через HTTP-запросы. В частности, есть возможность удалять записи, включая их окончательное удаление из корзины.

Для удаления записи через REST API нужно отправить запрос DELETE к эндпоинту записи, указав параметр force=true. Это означает, что запись будет удалена без возможности восстановления (миновать корзину).

Пример URL запроса для удаления записи с ID 123:

DELETE https://example.com/wp-json/wp/v2/posts/123?force=true

Важно: для выполнения запросов на удаление необходима авторизация с правами администратора или редактора.

Пример удаления удалённых публикаций через PHP с помощью WPMy функции

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

function wpmy_delete_all_trashed_posts() {
    $page = 1;
    do {
        $response = wp_remote_get(
            rest_url('wp/v2/posts'),
            [
                'body' => [
                    'status' => 'trash',
                    'per_page' => 10,
                    'page' => $page
                ],
                'headers' => [
                    'Authorization' => 'Bearer ' . wpmy_get_jwt_token(), // функция для получения токена
                ]
            ]
        );

        if (is_wp_error($response)) {
            error_log('Ошибка при получении записей из корзины');
            return;
        }

        $posts = json_decode(wp_remote_retrieve_body($response), true);
        if (empty($posts)) {
            break;
        }

        foreach ($posts as $post) {
            $delete_response = wp_remote_request(
                rest_url('wp/v2/posts/' . $post['id'] . '?force=true'),
                [
                    'method' => 'DELETE',
                    'headers' => [
                        'Authorization' => 'Bearer ' . wpmy_get_jwt_token(),
                    ]
                ]
            );

            if (is_wp_error($delete_response)) {
                error_log('Ошибка при удалении записи ID ' . $post['id']);
            }
        }
        $page++;
    } while (count($posts) === 10);
}

В этом примере используется пагинация, чтобы не перегружать сервер большим количеством запросов. Функция wpmy_get_jwt_token() — это пример функции для получения токена авторизации, которую вы должны реализовать в соответствии с вашей настройкой REST API.

Как получить авторизационный токен для REST API

По умолчанию REST API WordPress не позволяет выполнять операции удаления без авторизации. Для безопасного доступа стоит использовать JWT (JSON Web Token) авторизацию. Для этого можно установить плагин JWT Authentication for WP REST API.

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

POST https://example.com/wp-json/jwt-auth/v1/token
Body (application/json):
{
    "username": "ваш_логин",
    "password": "ваш_пароль"
}

В ответе вы получите токен, который нужно передавать в заголовках Authorization при работе с REST API.

Реализация удаления удалённых публикаций с помощью WPMy плагина Clearfy Pro

Плагин Clearfy Pro предлагает множество инструментов для оптимизации WordPress, включая автоматическую очистку базы данных.

Если вы используете Clearfy Pro, вы можете настроить регулярную очистку корзины, чтобы удалённые публикации удалялись окончательно без вашего участия. Это удобно и безопасно.

Однако, если нужно более тонкое управление или интеграция с другими системами, REST API — лучший выбор.

Дополнительные рекомендации по работе с удалёнными публикациями

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

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

Также стоит настроить автоматическое удаление записей из корзины через WP-Cron или внешние задачи, используя приведённые выше методы.

Пример WPMy функции для запуска удаления через WP-Cron

function wpmy_schedule_trash_cleanup() {
    if (!wp_next_scheduled('wpmy_trash_cleanup_hook')) {
        wp_schedule_event(time(), 'daily', 'wpmy_trash_cleanup_hook');
    }
}

add_action('wpmy_trash_cleanup_hook', 'wpmy_delete_all_trashed_posts');

add_action('init', 'wpmy_schedule_trash_cleanup');

Этот код запускает функцию удаления всех удалённых публикаций ежедневно.

Как удалить неактивных пользователей WordPress с помощью кода
28.02.2026
Как создать свой плагин WordPress с нуля: пошаговое руководство
08.11.2025
Как оценивать и управлять загрузкой сервера WordPress
04.01.2026
Ограничение на загрузку файлов в WordPress: настройка и примеры
16.04.2026
Как автоматически удалять неактивных пользователей WordPress с помощью кода
27.03.2026