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

Ниже не обзор, а маршрут по админке: от создания полей до проверки карточки на странице товара. В примере используется WordPress, WooCommerce, ACF Pro, WPCodeBox 2 и тема Blocksy. Результат — информационная карточка перед формой покупки. Покупателю показываются только заполненные значения; условия лицензии нужно подтвердить для каждого товара отдельно.

Важно: на WordPressBook уже настроен рабочий вариант: shortcode , поля ACF для товара и блок Blocksy «Данные товара», размещённый перед формой покупки с приоритетом 25. В статье описаны именно эти части, а не выдуманные пункты меню плагина. WPCodeBox — место, где хранится PHP-сниппет; Blocksy Content Block — место, где задаётся позиция блока на странице товара.

Что подготовить до начала

  1. Войдите в админку WordPress под пользователем с правами администратора.
  2. Убедитесь, что активны WooCommerce, Advanced Custom Fields Pro (ACF Pro), WPCodeBox 2 и Blocksy Companion Pro.
  3. Перед правкой PHP-сниппета сделайте резервную копию сайта или хотя бы сохраните исходный текст сниппета отдельно. Ошибка в PHP может вызвать критическую ошибку сайта.
  4. Откройте в новой вкладке карточку тестового товара, например «ACF Pro». После настройки удобно сравнить её с исходным состоянием.

Шаг 1. Откройте ACF и создайте группу полей

  1. В боковом меню WordPress нажмите ACF (в некоторых версиях меню называется Пользовательские поля).
  2. Откройте Группы полей и нажмите Добавить новую.
  3. В заголовке группы укажите Данные лицензии товара.
  4. Не закрывая страницу, добавьте поля по таблице ниже. Для каждого нового поля нажимайте Добавить поле.
Подпись поля Имя поля (Field Name) Тип Что вводить в товаре
Тип лицензии wb_license_type Текст Только подтверждённый тип лицензии
Количество сайтов wb_license_sites Текст Например, «1 сайт», если это подтверждено
Срок действия wb_license_period Текст Например, «Бессрочно (Lifetime)» только при подтверждении
Обновления wb_license_updates Текст Укажите фактический способ и срок обновлений
Активация wb_license_activation Текст Например, «Активация специалистом за 24 часа (обычно раньше, час-два)»

Для каждого поля задайте понятную Подпись, затем заполните Имя поля латиницей точно как в таблице. Не вводите пробелы и не заменяйте подчёркивания. Это имя, а не текст, который увидит покупатель. Значения заполняются позже в карточке товара.

Шаг 2. Ограничьте группу только товарами

  1. Внизу экрана группы найдите раздел Правила показа / Location Rules.
  2. В первом списке выберите Тип записи (Post Type).
  3. Во втором списке выберите условие равно.
  4. В третьем списке выберите Товар (Product).
  5. Нажмите Сохранить изменения или Опубликовать вверху справа.

Если оставить группу без этого условия, поля могут появиться не там, где нужно. После сохранения откройте товар в админке и убедитесь, что панель ACF видна на странице редактирования товара.

Шаг 3. Найдите PHP-сниппет в WPCodeBox 2

  1. В левом меню админки откройте WPCodeBox. Если меню свёрнуто, сначала нажмите значок раскрытия меню.
  2. Откройте список локальных сниппетов. В поиске списка попробуйте найти wb_license_card, «лицензия» или get_field.
  3. Откройте найденный PHP-сниппет. Перед сохранением проверьте, что это именно код карточки лицензии, а не другой сниппет.
  4. Если сниппет уже создан, найдите его в списке по названию. Если создаёте новый: нажмите кнопку создания сниппета, выберите тип PHP до сохранения и назовите, например, «Карточка лицензии товара». В редактор вставляется именно PHP-код, который регистрирует shortcode wb_license_card, читает пять ACF-полей и формирует карточку. В WPCodeBox тип сниппета выбирается до сохранения, поэтому не сохраняйте его как CSS или JavaScript. Если такого сниппета нет, не активируйте случайный PHP-код: сначала добавьте проверенный код, протестируйте его на копии сайта или попросите разработчика.
  5. Сохраните сниппет и включите его переключателем Enable/Активен. У включённого сниппета в списке не должно быть пометки «Disabled».

Как не перепутать место хука: сам PHP-сниппет должен быть запущен на фронтенде, где отображается товар, а блок должен быть выведен на странице отдельного товара WooCommerce. Название hook в этой настройке — woocommerce_single_product_summary, приоритет — 25. Не размещайте его в шапке сайта, в админке или в архиве магазина.

Если в вашей версии WPCodeBox нет отдельного поля «Hook», не ищите его наугад: хук может быть прописан внутри PHP-кода как add_action('woocommerce_single_product_summary', ... , 25). Настройки исполнения сниппета и хук WooCommerce — не одно и то же. У WPCodeBox есть свой экран редактора и параметров сниппета; официальная документация показывает расположение списка, редактора и настроек сниппета. Схема интерфейса WPCodeBox; настройки сниппета.

Шаг 4. Откройте блок размещения в Blocksy

  1. В меню WordPress откройте Внешний вид → Блоки содержимого (в некоторых версиях пункт может находиться в меню Blocksy).
  2. В списке найдите блок Данные товара и откройте его для редактирования. На WordPressBook это Blocksy Content Block с ID 1448.
  3. В содержимом блока должна находиться строка . Вставьте shortcode через блок «Шорткод» редактора Gutenberg либо в текстовый блок. Не добавляйте квадратные скобки повторно и не обрамляйте shortcode обратными кавычками.
  4. В панели настроек блока найдите раздел условий отображения / расположения. Выберите шаблон или условие для отдельного товара WooCommerce (Single Product).
  5. В параметре точки подключения выберите область сводки товара — woocommerce_single_product_summary (или соответствующее ей название в интерфейсе Blocksy).
  6. Установите приоритет 25, чтобы блок отображался перед стандартной формой покупки с приоритетом 30. Сохраните/обновите блок.

Названия контролов отличаются между версиями Blocksy. Ориентируйтесь на смысл настройки: тип страницы — отдельный товар; место — сводка товара; позиция — до формы покупки; приоритет — 25. Не выбирайте «Весь сайт».

Шаг 5. Заполните данные у одного тестового товара

  1. Откройте Товары → Все товары.
  2. Наведите курсор на тестовый товар и нажмите Изменить (не «Быстрое редактирование»).
  3. На странице редактирования прокрутите вниз до группы Данные лицензии товара.
  4. Заполните только те строки, условия которых подтверждены для этого товара. Не копируйте автоматически Lifetime, один сайт или сроки обновлений с другого продукта.
  5. Нажмите Обновить в правой колонке.

Шаг 6. Проверьте результат на витрине

  1. Откройте публичную страницу того же товара в новой вкладке.
  2. Обновите страницу. Если включён кэш, очистите кэш страницы в используемом плагине кэширования и обновите страницу ещё раз.
  3. Проверьте, что карточка находится перед количеством товара и кнопкой В корзину, а каждое значение совпадает с введённым в админке.
  4. Для проверки скрытия карточки временно удалите значения тестового товара, нажмите Обновить и откройте страницу снова. Пустая карточка не должна оставлять рамку или пустой отступ. Затем верните подтверждённые значения.
  5. Проверьте страницу на телефоне или в режиме мобильного просмотра браузера: длинные значения не должны перекрывать кнопку покупки.

Если что-то не отображается: проверка по порядку

  1. Нет полей в товаре: вернитесь в ACF и проверьте правило «Тип записи равно Товар», сохранение группы и точность имён полей.
  2. Поля заполнены, карточки нет: проверьте, что PHP-сниппет включён, shortcode написан точно как , а блок Blocksy назначен для отдельного товара.
  3. Карточка есть, но не перед кнопкой: проверьте точку подключения woocommerce_single_product_summary и приоритет 25. Если на странице два блока, отключите дублирующее размещение.
  4. Изменения не видны: очистите кэш страницы и проверьте страницу в приватном окне браузера.
  5. После сохранения появилась критическая ошибка: не редактируйте сайт дальше. Отключите последний изменённый сниппет через безопасный режим WPCodeBox или восстановите резервную копию; при отсутствии доступа обратитесь к разработчику/хостингу.
  6. Показываются неверные сведения: это не ошибка отображения. Исправьте поле в карточке товара и публикуйте только условия, подтверждённые для конкретного продукта.

Итог

Порядок настройки такой: создать ACF-группу и пять полей → показывать группу только у товаров → включить PHP-сниппет, который обрабатывает → поместить shortcode в Blocksy Content Block → назначить блоку отдельный товар и точку подключения с приоритетом 25 → заполнить подтверждённые данные и проверить публичную страницу. Так проще найти, на каком именно шаге возникла проблема.

Александр Лаврищев
Александр Лаврищев

Разрабатываю WordPress-сайты и воронки продаж для B2B, экспертов и онлайн-проектов. Соединяю маркетинг, SEO, аналитику и техническую разработку в одну систему, которая должна приводить клиентов.

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *