Как добавить обязывающее сообщение об ошибке 404 в WooCommerce

Диагностика проблемы: почему стандартная страница 404 в WooCommerce недостаточна

Стандартная страница ошибки 404 в WordPress и WooCommerce часто выглядит шаблонно и не даёт пользователю понятной инструкции для дальнейших действий. В результате посетитель сайта может уйти, не найдя нужный товар или категорию. Особенно это критично для интернет-магазинов, где потеря клиента означает потерю продажи.

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

Пошаговое решение: как добавить кастомное обязывающее сообщение на страницу 404 WooCommerce

1. Создаём дочернюю тему (если ещё нет)

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

<?php
// functions.php дочерней темы
// Подключение стилей дочерней темы
function child_theme_enqueue_styles() {
    wp_enqueue_style('parent-style', get_template_directory_uri() . '/style.css');
}
add_action('wp_enqueue_scripts', 'child_theme_enqueue_styles');
?>

2. Создаём кастомный шаблон для страницы 404 в WooCommerce

WooCommerce использует стандартный шаблон 404 из темы, но мы можем перехватить его и добавить своё сообщение.

<?php
// В файле 404.php дочерней темы
get_header();
?>
<div class="woocommerce-404">
    <h1>Страница не найдена</h1>
    <p>Извините, но запрашиваемая страница недоступна.</p>
    <p>Возможно, товар был удалён или перемещён.</p>
    <p>Попробуйте воспользоваться поиском или перейти в одну из категорий магазина ниже.</p>
    <?php echo get_search_form(); ?>
    <h2>Популярные категории товаров</h2>
    <ul>
        <?php
        $terms = get_terms(array(
            'taxonomy' => 'product_cat',
            'orderby' => 'count',
            'order' => 'DESC',
            'number' => 5,
            'hide_empty' => true
        ));
        if (!empty($terms) && !is_wp_error($terms)) {
            foreach ($terms as $term) {
                echo '<li><a href="'.esc_url(get_term_link($term)).'">'.esc_html($term->name).'</a></li>';
            }
        }
        ?>
    </ul>
</div>
<?php get_footer(); ?>

3. Добавляем редирект с несуществующих URL товаров на страницу 404 с сообщением

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

<?php
add_action('template_redirect', 'redirect_invalid_product_to_404');
function redirect_invalid_product_to_404() {
    if (is_singular('product')) {
        global $post;
        if (!$post || 'publish' !== get_post_status($post->ID)) {
            wp_redirect(home_url('/404'));
            exit;
        }
    }
}
?>

Проверка результата после внедрения

  • Откройте любой несуществующий URL товара, например https://ваш-сайт/produkt-ne-sushchestvuet.
  • Убедитесь, что отображается кастомное сообщение с заголовком, текстом, поиском и списком популярных категорий.
  • Проверьте, что поисковая форма работает и категории ведут на реальные страницы.
  • Проверьте, что при заходе на несуществующий URL товара происходит корректный редирект на страницу 404.

Частые ошибки и как их исправить

  • Ошибка: Кастомный шаблон 404 не отображается.
    Причина: Файл 404.php не находится в дочерней теме или тема кэширует шаблоны.
    Решение: Убедитесь, что 404.php лежит в корне дочерней темы, очистите кэш сайта и браузера.
  • Ошибка: Редирект с несуществующего товара не срабатывает.
    Причина: Пост с таким ID существует, но статус не «publish».
    Решение: Добавьте логику проверки статуса поста или используйте фильтр template_redirect с дополнительными условиями.
  • Ошибка: Список категорий пустой.
    Причина: Нет опубликованных категорий товаров.
    Решение: Проверьте наличие категорий и товаров в них или уберите блок с категориями.

Практические советы по безопасности и производительности

  • Используйте esc_html() и esc_url() для вывода данных, чтобы избежать XSS-уязвимостей.
  • Кэшируйте результаты get_terms() при большом количестве категорий, чтобы снизить нагрузку на базу.
  • Ограничьте число отображаемых категорий, чтобы не перегружать страницу.
  • Регулярно проверяйте логи ошибок сервера на предмет проблем с шаблонами.

Сравнение вариантов добавления кастомного сообщения 404 в WooCommerce

МетодОписаниеПлюсыМинусы
Редактирование 404.php дочерней темыПолный контроль над выводом страницы ошибкиМаксимальная гибкость, можно добавить любой функционалТребует знаний PHP и структуры темы
Плагин для кастомизации 404Использование готовых решений для изменения 404Простота установки, без кодаМожет быть ограничен функционалом и влиять на производительность
Редирект с несуществующих товаровАвтоматический переход на кастомную 404Улучшается UX, предотвращается показ ошибок сервераНужно корректно проверять статус поста для избежания циклов
Как сделать уникальный список постов с заказанным порядком в WordPress
01.02.2026
Как добавить автоматическое отправление сообщений в контактной форме WordPress
07.04.2026
Как автоматически изменять meta description в WordPress для улучшения SEO
17.04.2026
Как удалить категорию в WordPress с помощью кода
17.12.2025
Как удалить по умеренному варианту неактивных пользователей в WordPress
04.05.2026