Как вывести ссылку в echo через acf?
Мне нужно выводить ссылки через acf wp, но при таком вводе выдает ошибку:
Parse error: syntax error, unexpected identifier "link", expecting "," or ";" in |
Parse error: syntax error, unexpected identifier "link", expecting "," or ";" in
Как правильно выводить такое?
echo '<a href="the_field('link-bc');"> <span class="breadcrumbs__current">'; the_field('bc'); echo '</span> </a>'; |
echo '<a href="the_field('link-bc');"> <span class="breadcrumbs__current">'; the_field('bc'); echo '</span> </a>';
Дополнительные вопросы
Михаил Р. @Mike_Ro Python, JS, WordPress, SEO, Bots, Adversting
$link_bc = get_field('link-bc'); $bc = get_field('bc'); echo '<a href="' . esc_url($link_bc) . '"><span class="breadcrumbs__current">' . esc_html($bc) . '</span></a>'; |
$link_bc = get_field('link-bc'); $bc = get_field('bc'); echo '<a href="' . esc_url($link_bc) . '"><span class="breadcrumbs__current">' . esc_html($bc) . '</span></a>';
Алексей Уколов @alexey-m-ukolov С точки зрения PHP правильный синтаксис такой:
echo '<a href="' . the_field('link-bc') . '"> <span class="breadcrumbs__current">'; the_field('bc'); echo '</span> </a>'; |
echo '<a href="' . the_field('link-bc') . '"> <span class="breadcrumbs__current">'; the_field('bc'); echo '</span> </a>';
Однако, если я правильно помню, внутри the_field уже есть echo и тогда должно быть так:
echo '<a href="'; the_field('link-bc'); echo '"><span class="breadcrumbs__current">'; the_field('bc'); echo '</span></a>'; |
echo '<a href="'; the_field('link-bc'); echo '"><span class="breadcrumbs__current">'; the_field('bc'); echo '</span></a>';
Ответы на вопрос 0
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос


Ошибка появляется из-за смешивания PHP-строки, HTML и вызова
the_field()внутри одногоecho. Функцияthe_field()сразу печатает значение поля, поэтому её нельзя нормально склеивать как часть строки. Когда значение нужно вставить в атрибут, проверить или экранировать, используйтеget_field().Для обычного текстового поля со ссылкой правильнее так:
$link = get_field('link-bc'); $text = get_field('bc'); if ($link && $text) { echo '<a href="' . esc_url($link) . '">'; echo '<span class="breadcrumbs__current">' . esc_html($text) . '</span>'; echo '</a>'; }
Если поле ACF
link-bcимеет тип «Ссылка», оно может возвращать не строку, а массив с ключамиurl,titleиtarget. Тогда обработка должна быть другой:$link = get_field('link-bc'); $text = get_field('bc'); if (is_array($link) && ! empty($link['url'])) { $url = $link['url']; $title = $link['title'] ?: $text; $target = ! empty($link['target']) ? ' target="' . esc_attr($link['target']) . '"' : ''; echo '<a href="' . esc_url($url) . '"' . $target . '>'; echo '<span class="breadcrumbs__current">' . esc_html($title) . '</span>'; echo '</a>'; }
the_field()используйте для простого вывода значения на страницу.get_field()используйте для условий, склейки строк, атрибутов и подготовки HTML.esc_url(), текст черезesc_html(), атрибуты черезesc_attr().Также в исходном HTML не хватало нормальных угловых скобок и закрывающих тегов. Сначала соберите корректный HTML, а уже потом вставляйте в него значения ACF.