Как сделать автоматический редирект после удаления записи в WordPress

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

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

Удаление записи в WordPress приводит к тому, что URL этой записи перестаёт быть доступен. Если пользователь или поисковый робот переходят по старой ссылке, они увидят страницу ошибки 404. Это негативно сказывается на опыте посетителей и ранжировании сайта в поисковых системах.

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

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

Как отследить удаление записи в WordPress: хуки и события

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

  • before_delete_post — вызывается перед удалением записи из базы данных.
  • delete_post — вызывается после удаления записи.
  • trashed_post — вызывается при помещении записи в корзину.

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

Редирект после удаления записи необходимо выполнять при посещении URL удалённой записи. Значит, нам нужно перехватывать запрос в момент загрузки страницы и проверять, существует ли запись.

Реализация автоматического редиректа при доступе к удалённой записи

Чтобы реализовать редирект, когда пользователь пытается открыть удалённую запись, мы используем хук template_redirect. В этом хуке проверим, существует ли запись по текущему URL, и если нет — сделаем редирект на нужную страницу.

Вот пример кода, который можно добавить в файл functions.php вашей темы или в собственный плагин:

function wpset_redirect_after_deleted_post() {
    if (is_singular()) {
        global $post;
        if (!$post || get_post_status($post->ID) === false) {
            // Запись не найдена, делаем редирект
            wp_redirect(home_url('/?utm_source=wpset.ru&utm_medium=article&utm_campaign=kak-sdelat-avtomaticheskiy-redirekt-posle-udaleniya-zapisi-v-wordpress'));
            exit;
        }
    }
}
add_action('template_redirect', 'wpset_redirect_after_deleted_post');

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

Направление на категорию или другую релевантную страницу

Если вы хотите перенаправлять не на главную страницу, а, например, на родительскую категорию удалённой записи, нужно сохранить эту информацию до удаления.

Для этого создадим transient при удалении записи, чтобы сохранить ID категории, и потом использовать её для редиректа:

function wpset_before_delete_post_save_cat($post_id) {
    $categories = wp_get_post_categories($post_id);
    if (!empty($categories)) {
        set_transient('wpset_deleted_post_cat_' . $post_id, $categories[0], 60 * 60); // 1 час
    }
}
add_action('before_delete_post', 'wpset_before_delete_post_save_cat');

function wpset_redirect_after_deleted_post_with_cat() {
    if (is_singular()) {
        global $post;
        if (!$post || get_post_status($post->ID) === false) {
            $cat_id = get_transient('wpset_deleted_post_cat_' . get_queried_object_id());
            if ($cat_id) {
                $cat_link = get_category_link($cat_id);
                if ($cat_link) {
                    wp_redirect($cat_link . '?utm_source=wpset.ru&utm_medium=article&utm_campaign=kak-sdelat-avtomaticheskiy-redirekt-posle-udaleniya-zapisi-v-wordpress');
                    exit;
                }
            }
            // Если категории нет, редирект на главную
            wp_redirect(home_url('/?utm_source=wpset.ru&utm_medium=article&utm_campaign=kak-sdelat-avtomaticheskiy-redirekt-posle-udaleniya-zapisi-v-wordpress'));
            exit;
        }
    }
}
add_action('template_redirect', 'wpset_redirect_after_deleted_post_with_cat');

Таким образом, при удалении записи сохраняется ID первой категории, а при попытке открыть удалённую запись пользователь будет перенаправлен на страницу этой категории.

Использование плагинов для управления редиректами после удаления записей

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

  • Redirection — популярный плагин для создания и управления редиректами. Можно вручную создавать правила редиректа с URL удалённых записей на нужные страницы.
  • Safe Redirect Manager — простой и легкий плагин для управления редиректами.

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

Интеграция с плагином Clearfy Pro

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

Тестирование и отладка редиректов

После внедрения кода или настройки плагина важно тщательно протестировать работу редиректов:

  • Удалите тестовую запись и попытайтесь перейти по её старому URL.
  • Проверьте, что происходит корректный редирект на выбранную страницу.
  • Убедитесь, что в URL добавлены UTM-метки для аналитики.
  • Проверьте логи сервера на наличие ошибок.

Если редирект не срабатывает, проверьте, не конфликтуют ли другие плагины или настройки .htaccess.

Советы по улучшению UX и SEO при удалении записей

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

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

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

Реактивный фильтрованный вывод постов в WordPress с AJAX
20.03.2026
Как добавить собственные метаполя в WordPress
24.01.2026
Автоматизация создания резервных копий в WordPress с помощью кода
03.02.2026
Как автоматически удалять старые записи в WordPress
03.04.2026
Как удалить неактуальные transienty в WordPress и оптимизировать кэш
23.03.2026