Как отобразить shortcode с использованием расширенных пользовательских полей ACF

Частый запрос: вывести шорткод (слайдер, форма, карта) из шаблона, но чтобы контент-менеджер менял его в админке, а не в PHP. Связка простая: поле ACF + do_shortcode().

Функция WordPress do_shortcode() исполняет любой валидный shortcode из строки. Если зашить код в шаблон намертво, правки = деплой и риск синтаксических ошибок. Через Advanced Custom Fields отдаёте редактору текстовое поле, он вставляет шорткод как в контенте записи.

Настройка ACF

  • создайте поле типа Text (или Textarea, если шорткод длинный);
  • имя поля, например revolution_slider_shortcode;
  • привяжите к нужным шаблонам/типам записей;
  • в админке вставьте шорткод целиком, вида [rev_slider alias="home"].

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

В PHP-шаблоне темы (или через хук) читаете поле и прогоняете через do_shortcode:

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

Идея: get_field() забирает строку из ACF, do_shortcode() превращает её в HTML шорткода, echo выводит результат. Без echo (или return в нужном контексте) на странице ничего не появится.

На что обратить внимание

  • пустой вывод: проверяйте, что поле заполнено у нужного поста/опций и что ACF подключён до вызова;
  • для options page: get_field( 'field_name', 'option' );
  • не доверяйте произвольный shortcode незнакомым пользователям — это выполнение кода плагинов;
  • в block theme можно обернуть логику в блок «Код»/паттерн или вынести в маленький плагин/mu-plugin, если правите не child theme.

Итого: одно текстовое поле ACF + echo do_shortcode( get_field( ... ) ) — рабочий способ отдать шорткоды редакторам без правок шаблонов.


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