Диагностика проблемы с отображением SKU товара в WooCommerce
Если на страницах товаров WooCommerce не отображается артикул (SKU), несмотря на то, что он указан в админке, вероятнее всего проблема связана с темой или настройками шаблонов. SKU — важный атрибут, который часто используется для идентификации товара, и его отсутствие может негативно сказаться на UX и учете.
Первым делом проверьте:
- Включена ли опция отображения SKU в настройках WooCommerce:
WooCommerce → Настройки → Товары → Отображение— убедитесь, что опция "Показывать артикул" активна. - Поддерживает ли тема вывод SKU — не все темы по умолчанию показывают SKU, особенно если шаблоны переопределены.
- Нет ли конфликтов с плагинами, которые могут изменять вывод данных товара.
Почему тема может не показывать SKU
Чаще всего темы WooCommerce переопределяют шаблон single-product/meta.php, который отвечает за вывод метаданных товара, включая SKU. Если в вашей теме этот файл отсутствует, WooCommerce использует дефолтный шаблон из плагина. Если он есть, но код не выводит SKU, то артикул не будет виден.
Также бывает, что в functions.php темы добавляют фильтры или действия, которые отключают вывод SKU.
Пошаговое решение: добавляем поддержку SKU в тему
1. Проверяем, переопределяет ли тема шаблон meta.php
Перейдите в папку темы, например wp-content/themes/your-theme/woocommerce/single-product/meta.php. Если файл есть, откройте его и убедитесь, что в нем есть вызов функции woocommerce_template_single_meta(). Обычно шаблон содержит код, который выводит SKU и категории.
2. Добавляем вывод SKU вручную
Если шаблон отсутствует или не содержит вызовов SKU, можно добавить вывод SKU прямо в шаблон single-product.php или в нужном месте темы. Пример кода для вывода SKU:
<?php
$product = wc_get_product( get_the_ID() );
if ( $product->get_sku() ) {
echo '<span class="sku">' . esc_html__( 'SKU:', 'woocommerce' ) . ' ' . esc_html( $product->get_sku() ) . '</span>';
}
?>Этот код можно вставить в любое место шаблона, где хотите видеть артикул. Обычно это рядом с ценой или названием.
3. Проверяем фильтры, отключающие вывод SKU
В файле functions.php темы проверьте, нет ли кода, который удаляет действие woocommerce_template_single_meta или фильтров, которые модифицируют метаданные товара, например:
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta', 40 );Если такой есть, закомментируйте или удалите его.
Проверка результата после внедрения
После внесения изменений очистите кеш сайта и браузера, затем откройте страницу товара. SKU должен отображаться в том месте, где вы добавили код.
Для проверки можно использовать инспектор браузера (DevTools) и найти элемент с классом sku. Если артикул виден в HTML, но не отображается визуально, проверьте CSS темы — возможно, свойство display:none.
Частые ошибки и как их исправить
- SKU не выводится, хотя в коде есть вызов — проверьте, что у товара действительно заполнено поле SKU в админке.
- Код добавлен, но сайт выдает ошибку PHP — проверьте, что переменная
$productкорректно инициализирована, особенно если вывод происходит вне цикла WooCommerce. - CSS скрывает артикул — в инспекторе браузера посмотрите стили для класса
.sku, если стоитdisplay:noneилиvisibility:hidden, измените или переопределите CSS. - Функция
get_sku()возвращает пустое значение — убедитесь, что SKU заполнен и не пустой.
Практические советы по безопасности и производительности
- Используйте
esc_html()при выводе SKU, чтобы избежать XSS-уязвимостей. - Не добавляйте тяжелые запросы или лишнюю логику при выводе SKU — это просто строка, и она доступна из объекта товара.
- Если на сайте много товаров, и вы выводите SKU на страницах каталога, кэшируйте результат для снижения нагрузки.
Сравнение способов вывода SKU в теме WooCommerce
| Метод | Описание | Плюсы | Минусы |
|---|---|---|---|
| Использование стандартного шаблона meta.php | Переопределить файл meta.php в теме и вызвать woocommerce_template_single_meta() | Полный контроль над выводом, совместимость с плагинами | Необходимо поддерживать шаблон при обновлениях |
| Вставка кода вывода SKU напрямую в шаблон | Добавить PHP код с get_sku() в нужное место | Быстро и просто, подходит для кастомных тем | Менее гибко, требует аккуратности с инициализацией объекта |
| Использование хуков WooCommerce | Добавить действие или фильтр для вывода SKU | Чистый код, легко подключается/отключается | Требует знания хуков и правильного приоритета |