Ситуация типовая: в админке у товара артикул заполнен, а на витрине он не выводится. Чаще всего проблема не в WooCommerce как таковом, а в теме: шаблон карточки товара не содержит нужный вызов, вывод скрыт CSS, либо SKU отключён в настройках отображения.
Что именно ломается и где искать причину
Перед правкой кода проверьте три места. Это экономит время и помогает не чинить несуществующую проблему.
- В карточке товара действительно заполнено поле
SKUв блоке данных товара. - Тема не переопределяет шаблон
single-product/meta.phpили делает это с изменённой разметкой. - Артикул не скрыт стилями, например через
display:noneу блока метаданных.
Быстрая диагностика в браузере
Откройте карточку товара, нажмите Ctrl+U или используйте инспектор. Если в HTML есть блок с классом sku_wrapper, но текст не виден, это почти всегда CSS. Если блока нет вообще, значит тема не выводит стандартные метаданные WooCommerce или шаблон переопределён.
Ещё один практичный тест: временно переключитесь на стандартную тему WooCommerce-совместимую тему или отключите дочернюю тему. Если SKU появился, значит проблема в шаблоне темы, а не в данных товара.
Как исправить вывод SKU в теме
Есть два рабочих подхода: вернуть стандартный вывод WooCommerce или вывести артикул вручную в нужном месте шаблона. Первый вариант проще и безопаснее, второй нужен, если у вас кастомная карточка товара.
| Подход | Когда использовать | Плюс | Минус |
|---|---|---|---|
| Стандартный хук WooCommerce | Если тема не должна менять структуру карточки | Минимум кода | Меньше контроля над версткой |
| Кастомный вывод в шаблоне | Если у карточки свой дизайн | Полный контроль над местом вывода | Нужно следить за обновлениями шаблонов |
Вариант 1: вернуть стандартный блок метаданных
Если тема случайно убрала вывод метаданных, можно вернуть его через хук. Добавьте код в functions.php дочерней темы или в собственный мини-плагин:
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta', 40 );Этот вариант сработает только если тема не удаляет вывод SKU CSS-ом и не заменяет шаблон полностью. Если блок уже есть, но скрыт, сначала ищите стили.
Вариант 2: вывести SKU вручную в нужном месте
Если вам нужен артикул, например, под заголовком товара, можно вывести его отдельным фрагментом. Код ниже безопасно проверяет наличие SKU и не ломает страницу, если артикул пустой:
add_action( 'woocommerce_single_product_summary', 'wp_theme_show_product_sku', 6 );
function wp_theme_show_product_sku() {
global $product;
if ( ! $product instanceof WC_Product ) {
return;
}
$sku = $product->get_sku();
if ( empty( $sku ) ) {
return;
}
echo '<div class="product-sku">';
echo '<span class="product-sku__label">Артикул:</span> ';
echo '<span class="product-sku__value">' . esc_html( $sku ) . '</span>';
echo '</div>';
}Если хотите показывать SKU в каталоге, а не только в карточке товара, это уже отдельная задача: там лучше использовать фильтры шаблона каталога, а не копировать код из single product.
Если SKU скрыт стилями
Иногда артикул есть в HTML, но тема прячет его визуально. Проверьте CSS на классы вроде .sku_wrapper, .product_meta или собственные классы темы. Для теста можно временно добавить такой стиль в кастомайзер:
.product_meta .sku_wrapper {
display: block !important;
visibility: visible !important;
opacity: 1 !important;
}Если после этого SKU появился, значит нужно не добавлять новый PHP-код, а править стили темы или убрать конфликтующее правило.
Проверка результата после внедрения
После правки не ограничивайтесь визуальной проверкой. Нужно убедиться, что вывод стабилен на разных товарах и не ломает шаблон.
- Откройте товар с заполненным SKU и товар без SKU.
- Проверьте, что артикул выводится только там, где он есть.
- Посмотрите исходный HTML: блок должен присутствовать без ошибок разметки.
- Проверьте мобильную версию, если тема использует отдельные стили для карточки товара.
- Очистите кэш страницы и кэш браузера, если сайт использует плагин кэширования или серверный кэш.
Если у вас включён object cache или page cache, после изменения шаблона старый HTML может сохраняться. Это особенно заметно, когда код уже исправлен, но на фронтенде всё ещё видна старая версия карточки.
Частые ошибки и как их исправить
SKU заполнен, но вывод всё равно пустой
Проверьте, не пустой ли артикул на самом деле. В WooCommerce поле SKU может быть заполнено пробелами или дублироваться некорректно после импорта. Также убедитесь, что вы смотрите именно на товар, а не на вариацию, если тема выводит данные родительского товара.
Код добавили в functions.php, но ничего не изменилось
Частая причина — код вставлен в родительскую тему, а при обновлении используется дочерняя. Ещё один вариант: тема уже снимает стандартный хук через remove_action(), и ваш add_action() не попадает в нужный приоритет. В таком случае проверьте шаблон single-product/meta.php и файлы переопределения в теме.
Артикул появился дважды
Значит, вы одновременно вернули стандартный вывод WooCommerce и добавили собственный блок. Оставьте только один способ. Если нужен кастомный текст или место вывода, отключите стандартный блок и оставьте ручной вывод.
После правки сломалась вёрстка карточки
Обычно это происходит из-за незакрытых тегов или вставки HTML не в тот хук. Для вывода SKU используйте только проверенный контейнер и экранируйте значение через esc_html().
Что проверить в теме и шаблонах WooCommerce
Если вы работаете с дочерней темой, откройте такие файлы:
woocommerce/single-product/meta.php— здесь часто меняют вывод SKU, категорий и тегов.functions.php— здесь могут быть сняты стандартные действия WooCommerce.- CSS-файлы темы — ищите правила для
.product_metaи.sku_wrapper.
Если шаблон переопределён, сравните его с актуальной версией из WooCommerce. Иногда проблема возникает после обновления плагина: тема продолжает использовать старую копию шаблона, и часть метаданных перестаёт выводиться корректно.
Безопасность и производительность
Для такого изменения не нужен тяжёлый плагин. Если задача сводится к выводу одного поля, код в дочерней теме или мини-плагине обычно надёжнее. Это уменьшает риск конфликтов и упрощает отладку.
Не вставляйте SKU без экранирования и не используйте прямой вывод пользовательских данных в HTML. Даже если артикул заполняется только администратором, привычка экранировать значения через esc_html() и проверять объект товара через instanceof WC_Product избавляет от случайных ошибок при импорте или интеграциях.
Если в теме уже много переопределённых шаблонов WooCommerce, полезно периодически проверять их актуальность. Чем больше старых копий шаблонов, тем выше шанс, что после обновления плагина один из блоков перестанет совпадать с ожидаемой структурой.
Когда нужна не только правка SKU, но и более широкая чистка WooCommerce-шаблонов, имеет смысл сначала убрать лишние стили и дублирующие элементы, а уже потом добавлять новые блоки. В некоторых проектах для этого используют Clearfy Pro, но саму задачу с SKU он не решает автоматически — он полезен именно как инструмент для чистки и отключения лишнего, а не как замена теме.
Если после всех проверок SKU всё ещё не выводится, проблема почти наверняка в переопределённом шаблоне или в CSS. В таком случае быстрее всего найти конкретный файл темы, сравнить его с оригиналом WooCommerce и убрать лишний слой кастомизации, чем пытаться лечить это дополнительными плагинами.