Как удалить неиспользуемые посты в WordPress с помощью кода

В процессе ведения сайта на WordPress часто накапливаются посты, которые уже не актуальны, не используются, или были созданы для тестирования. Удаление таких постов вручную — утомительное и долгое занятие, особенно если их много. В этой статье мы разберем, как программно находить и удалять неиспользуемые посты с помощью PHP-кода и WP_Query, а также рассмотрим примеры автоматизации с помощью собственного плагина.

Что считать «неиспользуемыми» постами в WordPress

Прежде чем удалять, нужно определить критерии, по которым пост считается неиспользуемым. Обычно это:

  • Посты без комментариев и просмотров
  • Публикации, которые не редактировались длительное время (например, более 1 года)
  • Черновики и авто-сохранения, которые не публиковались
  • Посты с определенными метками или категориями, которые указывают на тестирование

Ниже рассмотрим пример на основе постов без комментариев и с датой последнего редактирования более года назад.

Используем WP_Query для поиска неиспользуемых постов

Для начала создадим функцию wplancer_get_unused_posts(), которая вернет ID постов, подходящих под наши критерии.

function wplancer_get_unused_posts() {
    $args = [
        'post_type'      => 'post',
        'posts_per_page' => -1,
        'date_query'     => [
            [
                'column' => 'post_modified_gmt',
                'before' => '1 year ago',
            ],
        ],
        'comment_count'  => 0,
        'post_status'    => 'publish',
        'fields'         => 'ids',
    ];

    $query = new WP_Query($args);

    return $query->posts;
}

Здесь мы выбираем все опубликованные посты, которые не редактировались более года и не имеют комментариев.

Удаляем найденные посты безопасно

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

function wplancer_delete_unused_posts() {
    $posts_to_delete = wplancer_get_unused_posts();
    
    foreach ($posts_to_delete as $post_id) {
        wp_delete_post($post_id, true);
    }

    return count($posts_to_delete);
}

Вызывая wplancer_delete_unused_posts(), вы удалите все подходящие посты. Но лучше сначала вывести список для проверки.

Выводим список неиспользуемых постов для проверки

Добавим функцию для вывода списка с ссылками на редактирование в админку.

function wplancer_list_unused_posts() {
    $posts = wplancer_get_unused_posts();

    if (empty($posts)) {
        echo '<p>Неиспользуемые посты не найдены.</p>';
        return;
    }

    echo '<ul>';
    foreach ($posts as $post_id) {
        $edit_link = get_edit_post_link($post_id);
        $title = get_the_title($post_id) ?: '(Без названия)';
        echo "<li><a href=\"{$edit_link}\" target=\"_blank\">{$title}</a> (ID: {$post_id})</li>";
    }
    echo '</ul>';
}

Пример простого плагина для удаления неиспользуемых постов

Чтобы автоматизировать процесс, можно создать плагин с админ-страницей, на которой выводится список и кнопка удаления.

/*
Plugin Name: WPLancer Удаление неиспользуемых постов
Description: Удаляет посты без комментариев и без редактирования более года.
Version: 1.0
Author: WPLancer
*/

add_action('admin_menu', function() {
    add_submenu_page(
        'tools.php',
        'Удаление неиспользуемых постов',
        'Удаление постов',
        'manage_options',
        'wplancer-delete-unused-posts',
        'wplancer_delete_unused_posts_page'
    );
});

function wplancer_delete_unused_posts_page() {
    if (!current_user_can('manage_options')) {
        return;
    }

    if (isset($_POST['wplancer_delete'])) {
        $deleted_count = wplancer_delete_unused_posts();
        echo "<div class=\"updated notice\">Удалено постов: {$deleted_count}</div>";
    }

    echo '<h1>Неиспользуемые посты</h1>';

    wplancer_list_unused_posts();

    echo '<form method="post"><input type="submit" name="wplancer_delete" class="button button-primary" value="Удалить все" /></form>';
}

Этот плагин добавляет страницу в меню «Инструменты» с возможностью просмотра и удаления постов.

Дополнительные советы и плагины для управления контентом

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

  • Clearfy Pro — плагин для оптимизации и очистки сайта, включая удаление мусора.
  • WPRemark — инструмент для управления комментариями и отзывами, который поможет выявить неактивные записи.

Использование собственных функций дает гибкость и позволяет точно подстроить очистку под нужды проекта, снижая риск удалить важный контент.

Как удалить и изменить атрибуты HTML в WooCommerce без плагинов
23.04.2026
Как избежать проблем с кешированием в WordPress: практические решения и примеры
19.01.2026
Автоматическое удаление товара из корзины WooCommerce при установке количества 0
03.05.2026
Как изменить шаблон страницы товара в WooCommerce без поддержки темы
07.05.2026
Как избежать конфликтов между плагинами в WordPress
25.12.2025