Диагностика проблемы: почему SKU не показывается в теме WooCommerce
SKU (Stock Keeping Unit) — уникальный идентификатор товара, важный для управления запасами и учета. В стандартной теме WooCommerce SKU выводится автоматически, но при кастомизации темы эта информация может не отображаться. Основные причины:
- В шаблонах темы отсутствует вызов функции вывода SKU.
- Используется кастомный шаблон single-product без вызова
woocommerce_template_single_meta(). - SKU отключен в настройках WooCommerce или для конкретного товара он не задан.
- Конфликты с плагинами, которые изменяют вывод метаданных товара.
Пошаговое решение: как добавить вывод SKU в тему WooCommerce
1. Убедитесь, что SKU задан у товара
Перейдите в админке WooCommerce в карточку товара, проверьте поле SKU. Если оно пустое, SKU не будет выводиться.
2. Проверьте настройки WooCommerce
В WooCommerce > Настройки > Товары > Инвентаризация убедитесь, что опция "Включить управление запасами" активна, иначе SKU может не отображаться.
3. Добавьте вызов вывода SKU в шаблон темы
Откройте файл single-product/meta.php в вашей теме (или дочерней теме). Если его нет, скопируйте из плагина WooCommerce (woocommerce/templates/single-product/meta.php).
В этом файле найдите или добавьте код вывода SKU:
if ( wc_product_sku_enabled() && ( $sku = $product->get_sku() ) ) {
echo '<span class="sku_wrapper">' . esc_html__( 'SKU:', 'woocommerce' ) . ' <span class="sku">' . esc_html( $sku ) . '</span></span>';
}Если вы используете кастомный шаблон single-product.php, убедитесь, что там вызвана функция woocommerce_template_single_meta() — она отвечает за вывод блока с SKU, категориями, тегами. Например:
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta', 40 );4. Если хотите вывести SKU в другом месте темы
Можно вывести SKU вручную, добавив в нужный шаблон следующий код:
global $product;
if ( wc_product_sku_enabled() && ( $sku = $product->get_sku() ) ) {
echo '<div class="custom-sku">SKU: ' . esc_html( $sku ) . '</div>';
}Проверка результата после внедрения
- Обновите страницу товара в браузере, убедитесь, что рядом с информацией о товаре отображается SKU.
- Если не видно, очистите кеш сайта и браузера.
- Проверьте в HTML-коде страницы наличие блока с классом
sku_wrapperили вашимcustom-sku. - Проверьте консоль браузера на отсутствие ошибок JS и ошибок PHP в логах сервера.
Частые ошибки и как их исправить
- SKU не задан у товара — решение: заполните поле SKU в админке товара.
- Отсутствует вызов
woocommerce_template_single_meta()— добавьте хук в шаблонsingle-product.php. - Кастомные шаблоны не наследуют шаблоны WooCommerce — скопируйте нужные шаблоны из плагина WooCommerce и адаптируйте код.
- Проблемы с кешированием — очистите кеш плагинов и браузера.
- Конфликты с плагинами — временно отключите плагины, влияющие на товары, проверьте результат.
Практические советы по безопасности и производительности
- Используйте
esc_html()и другие функции экранирования при выводе SKU, чтобы избежать XSS-уязвимостей. - Не выводите SKU в публичных местах, если он содержит конфиденциальную информацию.
- Добавляйте кастомный вывод SKU через хуки, чтобы не ломать логику обновлений темы и WooCommerce.
- Оптимизируйте шаблоны, избегайте дублирования кода.
Таблица сравнения способов вывода SKU в теме WooCommerce
| Способ | Плюсы | Минусы | Когда использовать |
|---|---|---|---|
Вызов woocommerce_template_single_meta() |
Стандартный, сохраняет обновляемость темы и плагина | Требует наличие стандартных шаблонов | При использовании стандартных шаблонов WooCommerce |
| Вставка кода вывода SKU вручную | Гибкость, можно вывести в любом месте | Нужно самостоятельно заботиться о безопасности и обновлениях | При кастомных шаблонах и специальных требованиях |
| Плагины для управления выводом метаданных | Простота без правки кода | Зависимость от стороннего кода, возможные конфликты | Для неразработчиков и быстрой настройки |