yelly.ru wordpress Yelly

Как отключить показ доступных остатков на странице товара WooCommerce в теме Yelly

В WooCommerce строка про остатки на странице товара часто мешает сильнее, чем кажется. Для части магазинов это лишний шум: покупатель видит число, которое быстро устаревает, или делает выводы о дефиците там, где товар просто продаётся под заказ. В теме Yelly это особенно заметно, если карточка товара сделана плотной по контенту и любая лишняя строка визуально перегружает блок покупки.

Ниже — рабочие способы убрать именно показ доступных остатков на странице товара, не отключая сам учёт остатков в WooCommerce. Это важное различие: мы не ломаем складской учёт, не выключаем stock management и не трогаем логику заказа.

Когда проблема реально возникает

Сценарий обычно один из трёх:

  • на карточке товара показывается «В наличии: 3 шт.» или похожая строка, хотя бизнесу это не нужно;
  • остатки меняются слишком часто, и покупатель видит устаревшие данные;
  • для товаров под заказ или с резервом складская цифра вводит в заблуждение и снижает конверсию.

Если у вас в Yelly подключены вариации, проблема может быть заметнее: у каждой вариации WooCommerce выводит свой статус и количество, а в карточке это выглядит тяжеловесно. При этом отключать остатки в админке полностью не всегда можно — магазину они нужны для внутреннего контроля.

Что именно нужно проверить перед правкой

Сначала откройте страницу товара и посмотрите, откуда берётся строка. В WooCommerce это может быть:

  • стандартный вывод через шаблон товара;
  • текст в блоке вариаций;
  • кастомизация темы или плагина, который добавляет метку наличия отдельно от WooCommerce.

Если строка появляется только у вариативных товаров, решение может отличаться от простого скрытия блока stock на одиночной странице товара.

Самый надёжный способ: скрыть вывод через хук WooCommerce

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

add_filter( 'woocommerce_get_availability_text', function( $text, $product ) {
    if ( is_product() ) {
        return '';
    }

    return $text;
}, 10, 2 );

Код можно добавить в functions.php дочерней темы или в небольшой mu-plugin. Для живого магазина второй вариант обычно безопаснее: обновление темы не затрёт правку.

Но у этого способа есть нюанс: если тема или плагин выводят не текст доступности, а отдельный HTML-блок, фильтр может не сработать. Тогда нужен более точный подход.

Если строка выводится шаблоном: убрать блок через CSS или переопределение

В WooCommerce стандартный блок наличия имеет класс .stock. Если в Yelly он не переопределён, можно скрыть его на странице товара через CSS. Это быстрый вариант, когда нужно убрать только визуальный вывод, не трогая PHP.

.single-product .product .stock {
    display: none;
}

Этот способ простой, но грубый. Он скрывает блок целиком, поэтому не подходит, если вы хотите оставить, например, статус «Нет в наличии» только для некоторых товаров. В таком случае лучше использовать условный PHP-фильтр.

Когда CSS лучше не использовать

Не стоит ограничиваться CSS, если:

  • нужно убрать текст только для части товаров;
  • важно оставить сообщение о недоступности;
  • в карточке товара есть несколько элементов со схожими классами и можно задеть лишнее.

CSS — это маскировка, а не решение логики. Для магазина с нестандартной карточкой товара в Yelly лучше править вывод на уровне PHP.

Точечное решение: скрыть только количество, но оставить статус наличия

Если вам важно оставить «В наличии» или «Нет в наличии», но убрать именно число, можно отфильтровать текст доступности только для товаров, у которых есть остаток. Это полезно для магазинов, где статус нужен, а цифра — нет.

add_filter( 'woocommerce_get_availability_text', function( $text, $product ) {
    if ( ! is_product() || ! $product instanceof WC_Product ) {
        return $text;
    }

    if ( $product->managing_stock() && $product->get_stock_quantity() > 0 ) {
        return __( 'В наличии', 'woocommerce' );
    }

    return $text;
}, 10, 2 );

Здесь логика простая: если товар ведёт учёт остатков и количество больше нуля, вместо числа показываем нейтральный статус. Если товара нет в наличии, WooCommerce продолжит выводить свой стандартный текст.

Такой вариант особенно уместен, если у вас в Yelly карточка товара строится вокруг кнопки покупки и кратких преимуществ, а складская цифра только отвлекает.

Диагностика: почему код может не сработать

Если после добавления фильтра строка осталась, проверьте по шагам:

  1. Код добавлен в активную дочернюю тему или mu-plugin, а не в файл, который не загружается.
  2. Нет второго плагина, который выводит наличие отдельным блоком.
  3. Кэш страницы очищен: серверный, плагина кэша и браузера.
  4. Товар действительно открывается как одиночная страница товара, а не как предпросмотр или кастомный шаблон.
  5. Строка не приходит из перевода или из настроек темы, а не из WooCommerce.

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

Сравнение подходов

СпособЧто делаетПлюсМинус
Фильтр woocommerce_get_availability_textМеняет текст наличия на уровне WooCommerceГибко и безопасно для обновленийНе сработает, если вывод кастомный
CSS-сокрытиеПрячет блок визуальноБыстро внедряетсяНе решает логику и может скрыть лишнее
Переопределение шаблонаМеняет HTML карточки товараПолный контрольСложнее сопровождать

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

После правки откройте несколько типов товаров:

  • простой товар с остатком;
  • товар без остатка;
  • вариативный товар;
  • товар, у которого включён учёт склада.

Проверьте не только внешний вид, но и поведение кнопки покупки. Если товар был в наличии, кнопка должна остаться активной. Если товара нет, статус недоступности должен сохраниться. Это особенно важно, если вы скрывали блок через CSS: визуально всё может выглядеть нормально, но логика магазина должна остаться прежней.

Дополнительно откройте исходный код страницы и убедитесь, что лишний текст действительно не выводится сервером, а не просто скрыт стилями. Для SEO и доступности это полезнее, чем маскировка через display:none.

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

Скрыли всё подряд и потеряли статус «Нет в наличии»

Так бывает, если использовать слишком общий CSS-селектор. Исправление простое: ограничьте правило только нужным блоком или перейдите на PHP-фильтр, где можно оставить недоступные товары без изменений.

Код добавили в родительскую тему

После обновления тема перезапишется, и правка исчезнет. Для таких изменений используйте дочернюю тему или mu-plugin.

Остатки скрылись не везде

Значит, часть вывода идёт не через стандартный WooCommerce, а через шаблон темы или плагин. В этом случае ищите конкретный шаблон карточки товара в Yelly и проверяйте, не дублируется ли блок наличия в другом месте.

После правки сломалась вариативность

Обычно причина в том, что вместе с текстом скрыли контейнер, который нужен для JS WooCommerce. Не прячьте весь блок без проверки: иногда достаточно убрать только текст, а не обёртку.

Что учесть для безопасности и производительности

Если правка небольшая, не тащите её в отдельный тяжёлый плагин. Для одной фильтрации текста достаточно mu-plugin или дочерней темы. Это проще сопровождать и легче откатить.

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

Для магазинов на Yelly и WooCommerce такой подход обычно самый практичный: вы сохраняете складской учёт, убираете лишний визуальный шум и не ломаете карточку товара. Если же у вас вывод наличия сделан через кастомный блок, сначала найдите источник, а уже потом скрывайте его — это сэкономит время и избавит от случайных побочных эффектов.

×
Сделай WordPress мощнее!

Скидка -20% на топовые премиум плагины

Выбрать плагин сейчас ⋙