Как добавить вывод стоимости отсутствующих товаров в корзине WooCommerce

Проблема: отсутствие информации о стоимости товаров, которых нет в наличии, в корзине WooCommerce

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

Диагностика проблемы

Для начала убедитесь, что в настройках WooCommerce разрешена возможность заказа отсутствующих товаров:

  • Перейдите в WooCommerce → Настройки → Товары → Управление запасами.
  • Проверьте, что включена опция Разрешить заказ при отсутствии запаса.

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

Пошаговое решение: как вывести стоимость отсутствующих товаров в корзине

1. Используем хук woocommerce_cart_item_name для добавления цены под названием товара

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

add_filter('woocommerce_cart_item_name', 'show_price_for_out_of_stock_items', 10, 3);function show_price_for_out_of_stock_items($product_name, $cart_item, $cart_item_key) {    $product = $cart_item['data'];    if ($product->managing_stock() && $product->is_on_backorder($cart_item['quantity'])) {        $price_html = wc_price($product->get_price());        $product_name .= '<br><small style="color:#d9534f;">Цена при отсутствии товара: ' . $price_html . '</small>';    }    return $product_name;}

2. Дополнительно: выводим суммарную стоимость отсутствующих товаров в футере корзины

Чтобы покупатель видел общую сумму товаров, которых нет в наличии, добавим эту сумму в нижнюю часть страницы корзины.

add_action('woocommerce_cart_totals_after_order_total', 'show_backorder_items_total');function show_backorder_items_total() {    $backorder_total = 0;    foreach (WC()->cart->get_cart() as $cart_item) {        $product = $cart_item['data'];        if ($product->managing_stock() && $product->is_on_backorder($cart_item['quantity'])) {            $backorder_total += $product->get_price() * $cart_item['quantity'];        }    }    if ($backorder_total > 0) {        echo '<tr class="backorder-total"><th>Стоимость отсутствующих товаров</th><td>' . wc_price($backorder_total) . '</td></tr>';    }}

Для корректного отображения добавьте следующий CSS в файл стилей вашей темы или в раздел кастомных стилей:

.backorder-total th, .backorder-total td {    font-weight: 700;    color: #d9534f;}

Проверка результата

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

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

  • Цена не отображается: проверьте, что у товара установлен правильный тип управления запасами и включен backorder. Функция is_on_backorder() возвращает true только в этом случае.
  • Строка с суммой отсутствующих товаров не появляется: возможно, корзина очищена или товары не отмечены как backorder. Используйте режим отладки WooCommerce для проверки состояния корзины.
  • Отображение ломает верстку корзины: убедитесь, что HTML и CSS корректны, а тема не переопределяет стандартные шаблоны WooCommerce без учета новых строк.

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

  • Не используйте тяжелые запросы или дополнительные циклы в хуках, работающих на странице корзины — это может замедлить загрузку.
  • Всегда тестируйте изменения на staging-сайте или локальной копии перед внедрением на рабочий магазин.
  • Используйте дочернюю тему для добавления кастомного кода, чтобы избежать потери изменений при обновлении темы.
  • Для защиты от XSS убедитесь, что все данные, выводимые в HTML, проходят экранирование, например, через esc_html() или аналогичные функции, где это необходимо.

Сравнение подходов: плагин vs кастомный код

МетодПлюсыМинусыКомпромисс
Готовый плагин для отображения backorder цены Простота установки и настройки, поддержка обновлений Может содержать лишний функционал, нагрузка на сайт Использовать, если нет опыта PHP
Кастомный код в functions.php Точный контроль, минимум лишнего кода, легкий и быстрый Требует навыков программирования, поддержка ложится на вас Оптимальное решение для разработчиков
Как добавить вывод стоимости отсутствующих товаров в корзине WooCommerce
28.05.2026
Оптимизация базы данных WordPress: практические методы и примеры кода
30.11.2025
Как настроить автоматическую удалённую очистку кеша в WordPress
14.12.2025
Как добавить атрибуты для оптимизации изображений в WordPress
27.01.2026
Автоматизация просмотра отзывов на WordPress: практические решения
26.03.2026

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