Не работает проверка в WP if (have_rows('block_name')): ?
Ссылка скопирована
Добрый день!
В шаблоне WP прописан код вывода блока из ACF.
Если блок не заполненный, то ничего не выводит.
Если заполнить заголовок в блоке, т.е. даные в нём есть, но вывода нет.
Дополнительно:
Нужно решить такую задачу?
Заказать помощь
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Лучший ответ
1
Другие ответы (0)
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопроскомментарий
Вам также может быть интересно
linkedin
Из-за чего выкидывает из аккаунта LinkedIn?
0 ответов
code-review
Нужен ли код-ревью React/TypeScript проекта?
0 ответов
Telegram
Как добиться, чтобы Telegram прислал мне именно смс код, а не через звонок его диктовал?
0 ответов
Аккумуляторные батареи
Почему при зарядке автостарта слышен писк, где искать причину?
0 ответов




have_rows('block_name')работает только для поля типа Repeater/Flexible Content/Group с повторяемыми строками. Если в ACF заполнен обычный заголовок внутри группы или простое текстовое поле,have_rows()может вернутьfalse, потому что «строк» там нет. Для обычных полей используйтеget_field()илиget_sub_field()внутри правильного контекста.Если
block_name— группа ACF:$block = get_field('block_name'); if (! empty($block['title'])) : ?> <section class="my-block"> <h2><?php echo esc_html($block['title']); ?></h2> </section> <?php endif; ?>
Если
block_name— repeater:<?php if (have_rows('block_name')) : ?> <div class="my-block"> <?php while (have_rows('block_name')) : the_row(); ?> <h3><?php echo esc_html(get_sub_field('title')); ?></h3> <?php endwhile; ?> </div> <?php endif; ?>
Ещё частая причина — поле привязано не к текущему посту. Тогда укажите ID явно:
$block = get_field('block_name', get_the_ID());
Проверьте точное имя поля, тип поля и место вывода шаблона. В ACF label и name — разные вещи; в коде нужен именно field name, а не русское название поля.