Как вывести шорткод из поля ACF в шаблоне WordPress

Эту заметку я написал 25 июля 2023 года, потому что меня часто спрашивали, как это сделать. В шаблонах WordPress шорткод обычно выводят функцией do_shortcode(). Но если шорткод прописан прямо в файле темы, любое изменение требует правки PHP, а ошибка в файле может уронить сайт до белого экрана.

Шорткод в поле ACF

Удобнее хранить шорткод в поле плагина Advanced Custom Fields. Создайте поле типа Text, например revolution_slider_shortcode, и вставьте в него шорткод слайдера или формы. Теперь владелец сайта меняет его в админке, не трогая шаблон.

Вывод в шаблоне

В файле шаблона получаем значение поля через get_field(), сохраняем в переменную и передаём в do_shortcode(). Не забудьте echo: функция возвращает HTML, а не выводит его сама.

<?php
  $revslider_shortcode = get_field( 'revolution_slider_shortcode' );
  echo do_shortcode( $revslider_shortcode );
?>

Если поле может быть пустым, стоит добавить проверку if ( $revslider_shortcode ), чтобы не выводить лишнюю разметку.

Важное про ACF 6.2.5

Начиная с версии ACF 6.2.5 значения, которые выводит шорткод , экранируются, и HTML внутри них может перестать работать. Подробности в заметке об экранировании в шорткоде ACF. Если вы работаете с полями ACF, пригодится и пример динамической галереи ACF с lightbox.

Связка get_field() и do_shortcode() позволяет менять шорткоды из админки и не лезть в файлы темы.

Источники и ссылки


Комментарии загружаются…